我在我的网站上使用select2。如果下拉列表打开或关闭,我需要知道。我研究过documentation,但我不知道如何做到这一点。例如,这样的事情会很好:
if ($('select').select2('isOpen') === true) { ... }
有什么建议吗?
答案 0 :(得分:14)
在select2
版本4.0中,您可以收听select2:opening
元素上的select2:open
,select2:closing
,select2:close
和select
个事件,例如:
$('select').on('select2:open', function (e) {
// select2 is opened, handle event
});
答案 1 :(得分:9)
Select2 4.0有isOpen
方法。如果#mySelect
是您的HTML选择元素,那么:
$('#mySelect').data('select2').isOpen()
...将返回true或false,具体取决于Select2的状态。
答案 2 :(得分:6)
通过执行一些代码检查,看起来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年以来,事件的名称似乎已更新。See user1636505's answer below。
答案 3 :(得分:3)
从Select2 4.0.6开始,这已更新为以下
$("#foo").select2("isOpen")
这将返回true / false
希望这有帮助!
答案 4 :(得分:1)
change
。
select2:open
。 select2:在此之前触发开启,可以防止。
select2:close
都会被触发。 select2:在此之前触发关闭,可以防止。
select2:select
。 select2:在此之前触发选择并且可以防止。
select2:unselect
。 select2:取消选择在此之前触发,可以防止。
答案 5 :(得分:0)
最好这样做:
var select2 = $('#selectorname').data('select2');
if (select2.opened()) {
//do it
} else {
//dont do it
}
答案 6 :(得分:0)
$( '选择')SELECT2( 'isFocused');