select2
的4.0版本中,您可以在select
元素上监听select2:opening
,select2:open
,select2:closing
和select2:close
事件。例如:$('select').on('select2:open', function (e) {
// select2 is opened, handle event
});
select2:close
做相反的操作 - NooBskieSelect2 4.0提供了一个isOpen
方法。如果#mySelect
是你的HTML选择元素,则:
$('#mySelect').data('select2').isOpen()
...将根据 Select2 的状态返回 true 或 false。
通过一些代码检查,看起来它添加的类是select2-dropdown-open
。但文档中有一个事件select2-open
在下拉列表打开时触发。您可以使用它来设置变量或执行操作(还有select2-close
)。
您可以像这样执行操作:
$("#e11").on("select2-open", function() {
$(this).data("open", true);
});
$("#e11").on("select2-close", function() {
$(this).data("open", false);
});
if ($("#e11").data("open")) {
//do something
}
2018年修订
自2014年以来,活动名称似乎已经更新。请参见下面用户1636505的答案。
select2-dropdown-open
并没有被添加到选择元素本身!我注意到有一个事件被触发,但我希望有一个更好的解决方案。 - Jeanluca Scaljeri$("#foo").select2("isOpen")
change
事件在选项被选择或移除时触发。
select2:open
事件在下拉列表打开时触发。select2:opening事件在此之前触发,可以被阻止。
select2:close
事件在下拉列表关闭时触发。select2:closing事件在此之前触发,可以被阻止。
select2:select
事件在结果被选择时触发。select2:selecting事件在此之前触发,可以被阻止。
select2:unselect
事件在结果被取消选择时触发。select2:unselecting事件在此之前触发,可以被阻止。
最好这样做:
var select2 = $('#selectorname').data('select2');
if (select2.opened()) {
//do it
} else {
//dont do it
}
它完美地运作。
$(".select2-container").is(":visible")