Запрет открытия раскрывающихся меню в переполнении: скрытый контейнер - PullRequest
0 голосов
/ 15 января 2019

У меня есть модал с таблицей, содержащей несколько выпадающих меню начальной загрузки. Это переполнение: автоматически прокручиваемый контейнер. Поэтому, чтобы предотвратить отключение выпадающего меню, я написал функцию jquery. Теперь проблема в том, что, когда я нажимаю на раскрывающийся список, он открывается, а если я открываю другой, предыдущий раскрывающийся список не закрывается. e.preventDefault и e.stopPropogation не помогли.

e.preventDefault и e.stopPropogation не помогли.

<div class="btn-group action-dropdown btn-action fright dropdown"> . 
    <button class="btn btn-primary" data-toggle"{{(dafaultTableAction!=undefined?'':'dropdown')}}">
         <span ng-click="dafaultTableAction.popupToConfirm?callActionWithWarning(item,dafaultTableAction): callTableRecordActionEvent(null,item,dafaultTableAction,(dafaultTableAction.questActionId.rule=='VIEW'?true:false))"> {{dafaultTableAction!=null?dafaultTableAction.title:'Take Action'}} . 
         </span>
     </button>
     <button class="btn list dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true"> 
        <i class="fa fa-angle-down"></i>
    </button>
    <div class="dropdown-menu events-dropdown olt-dropdown" id="progress">
        <ul>
            <li class="dropdown-item" ng-repeat='tableAction in tableActionList' ng-click="tableAction.popupToConfirm?callActionWithWarning(item,tableAction):callTableRecordActionEvent(null,item,tableAction,(tableAction.questActionId.rule=='VIEW'?true:false))">
            </li> 
        </ul>
    </div>
</div>


    var dropdownMenu;  
    var dropdownMenuBtn;
    $('.table-box').on('show.bs.dropdown', function (e) {
        dropdownMenu = $(e.target).find('.dropdown-menu');
        dropdownMenuBtn = $(e.target).find('.dropdown-toggle');  
        $('.olt-view .table-box').append(dropdownMenu.detach());        
        e.stopPropagation();
        e.preventDefault();    
        dropdownMenu.css('display', 'block');             
        dropdownMenu.position({                           
        'my': 'right top',                            
        'at': 'right bottom',                         
        'of': $(e.relatedTarget)                      
        })                                     
    });    

    $('.table-box').on('hide.bs.dropdown', function(e) {     
        e.stopPropagation();
        e.preventDefault();   
        $(e.target).append(dropdownMenu.detach());        
        dropdownMenu.hide();    
        dropdownMenu.css('display','none');                                                         
    });
...