Javascript 从不同元素切换select2
我们在一行中有一个select2下拉列表(只有一个div),我们需要能够单击整行来触发下拉列表。我在展示它时没有问题,但试图隐藏它却成了一个问题,我想知道我的逻辑是否有缺陷。Select2AFAIK在我们使用的版本上没有切换方法,所以我必须手动使用它的打开和关闭方法。这就是我试过的Javascript 从不同元素切换select2,javascript,jquery,jquery-select2,Javascript,Jquery,Jquery Select2,我们在一行中有一个select2下拉列表(只有一个div),我们需要能够单击整行来触发下拉列表。我在展示它时没有问题,但试图隐藏它却成了一个问题,我想知道我的逻辑是否有缺陷。Select2AFAIK在我们使用的版本上没有切换方法,所以我必须手动使用它的打开和关闭方法。这就是我试过的 $('[data-variable-type=select]').on('click', function(e){ e.stopPropagation(); var _dropdown = $(this).f
$('[data-variable-type=select]').on('click', function(e){
e.stopPropagation();
var _dropdown = $(this).find('div.interface_dropdown');
if( _dropdown.hasClass('select2-dropdown-open') ) {
$(this).find('select.interface_dropdown').select2('close');
}
else {
$(this).find('select.interface_dropdown').select2('open');
}
});
这会使它正常打开,但当您单击以关闭它时,它会在mousedown时关闭,但在mouseup时重新出现
有什么方法可以让它正确切换吗?你能发布相关的HTML吗?如果看不到内容,很难理解你在做什么
$('[data-variable-type=select]').on('click', function(e){
e.stopPropagation();
var _dropdown = $(this).find('div.interface_dropdown');
if( _dropdown.hasClass('select2-dropdown-open') ) {
_dropdown.removeClass('select2-dropdown-open');
_dropdown.select2('close');
} else {
_dropdown.select2('open');
_dropdown.addClass('select2-dropdown-open');
}
});
看起来你忘了添加/删除那个类,也许这样会更好?再一次,我在黑暗中摸索,看不到你的内容 你会发布相关的HTML吗?如果看不到内容,很难理解你在做什么
$('[data-variable-type=select]').on('click', function(e){
e.stopPropagation();
var _dropdown = $(this).find('div.interface_dropdown');
if( _dropdown.hasClass('select2-dropdown-open') ) {
_dropdown.removeClass('select2-dropdown-open');
_dropdown.select2('close');
} else {
_dropdown.select2('open');
_dropdown.addClass('select2-dropdown-open');
}
});
if( _dropdown.hasClass('select2-dropdown-open') ) {
$(this).find('select.interface_dropdown').select2('close');
}
看起来你忘了添加/删除那个类,也许这样会更好?再一次,我在黑暗中摸索,看不到你的内容
if( _dropdown.hasClass('select2-dropdown-open') ) {
$(this).find('select.interface_dropdown').select2('close');
}
在更高版本的select2(3.3+iirc)中,这将永远不会触发,因为当打开select2时,它会在整个浏览器上创建一个透明的掩码,并侦听单击事件。单击当前打开的掩码时,选择2关闭。这是在用户准备执行其他操作时关闭select2的唯一可靠方法
在更高版本的select2(3.3+iirc)中,这将永远不会触发,因为当打开select2时,它会在整个浏览器上创建一个透明的掩码,并侦听单击事件。单击当前打开的掩码时,选择2关闭。当用户准备做其他事情时,这是关闭select2的唯一可靠方法。正确的方法是:
$('select').data('select2').toggleDropdown()
正确的方法是:
$('select').data('select2').toggleDropdown()
我相信select2的“打开”和“关闭”方法会自动处理。我相信select2的“打开”和“关闭”方法会自动处理。谢谢,我们现在正在升级我们的版本,如果有任何进展,我会告诉你:)谢谢,我们现在正在升级我们的版本,如果有任何进展,我会告诉你:)