Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止引导功能切换下拉菜单_Javascript_Jquery_Twitter Bootstrap_Drop Down Menu_Toggleclass - Fatal编程技术网

Javascript 防止引导功能切换下拉菜单

Javascript 防止引导功能切换下拉菜单,javascript,jquery,twitter-bootstrap,drop-down-menu,toggleclass,Javascript,Jquery,Twitter Bootstrap,Drop Down Menu,Toggleclass,我将引导导航栏转换为工具栏,并修改了下拉菜单(实际上是下拉菜单),使其包含2个元素: 问题是,当我选择一个日期时,下拉列表会崩溃。我的解决方案(我对其他人开放)是创建一个函数,通过添加类“open”并将该函数添加到datepicker close()函数中来打开下拉列表 function leaveOpen(){ $("#dropdownMenu2").trigger('focus').attr('aria-expanded', 'true'); $("#rangeDropdown")

我将引导导航栏转换为工具栏,并修改了下拉菜单(实际上是下拉菜单),使其包含2个元素:

问题是,当我选择一个日期时,下拉列表会崩溃。我的解决方案(我对其他人开放)是创建一个函数,通过添加类“open”并将该函数添加到datepicker close()函数中来打开下拉列表

function leaveOpen(){
  $("#dropdownMenu2").trigger('focus').attr('aria-expanded', 'true');
  $("#rangeDropdown").addClass('open');
}(jQuery);
此函数可以正常工作,但有另一个引导函数可以将“open”类切换为右后退:

Dropdown.prototype.toggle = function (e) {
var $this = $(this)
if ($this.is('.disabled, :disabled')) return
var $parent  = getParent($this)
var isActive = $parent.hasClass('open')
clearMenus()

if (!isActive) {
  ...
  var relatedTarget = { relatedTarget: this }
  $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
  ...
  $this
    .trigger('focus')
    .attr('aria-expanded', 'true')

  $parent
    .toggleClass('open')
    .trigger('shown.bs.dropdown', relatedTarget)
}
我有点被这个JavaScript弄得不知所措我可以向leaveOpen()添加什么来防止“open”类在“Dropdown.prototype.toggle=function(e)”中切换?查看:

AFAIK需要两种预防机制:

1) 单击datepicker文本字段后,停止隐藏下拉列表:

$('.datepicker').on('click', function (e) {
    e.stopPropagation();
});
参考:

2) 单击日历中的日期后,停止隐藏下拉列表:

$('.dropdown').on('hide.bs.dropdown', function (e) {
    if($('.datepicker-dropdown').length > 0) {
        return false;
    }
});
参考:

请查看:

AFAIK需要两种预防机制:

1) 单击datepicker文本字段后,停止隐藏下拉列表:

$('.datepicker').on('click', function (e) {
    e.stopPropagation();
});
参考:

2) 单击日历中的日期后,停止隐藏下拉列表:

$('.dropdown').on('hide.bs.dropdown', function (e) {
    if($('.datepicker-dropdown').length > 0) {
        return false;
    }
});
参考:


把那畜生打死!我已经能够重现我认为你正在遇到的情况:JSFIDLE那个野兽!我已经能够重现我认为你遇到的情况: