如何检查Select2中是否打开了下拉列表?

Jea*_*eri 9 javascript jquery jquery-select2

我在我的网站上使用select2.如果下拉列表打开或关闭,我需要知道.我研究了文档,但我不知道如何做到这一点.例如,像这样的东西会很好:

if ($('select').select2('isOpen') === true) { ... }
Run Code Online (Sandbox Code Playgroud)

有什么建议?

use*_*505 18

在4.0版的select2,你可以听select2:opening,select2:open,select2:closingselect2:close对事件的select元素,例如:

$('select').on('select2:open', function (e) {
    // select2 is opened, handle event
});
Run Code Online (Sandbox Code Playgroud)


Pau*_*aul 9

Select2 4.0有一个isOpen方法.如果#mySelect是您的HTML select元素,那么:

$('#mySelect').data('select2').isOpen()
Run Code Online (Sandbox Code Playgroud)

...将返回true或false,具体取决于Select2的状态.


jwa*_*980 7

通过执行一些代码检查,它看起来就像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
}
Run Code Online (Sandbox Code Playgroud)

2018编辑

自2014年以来,事件的名称似乎已更新.请参阅下面的user1636505的答案.


Mig*_*Cub 7

从 Select2 4.0.6 开始,这已更新为以下内容

$("#foo").select2("isOpen")
Run Code Online (Sandbox Code Playgroud)

这将返回真/假

希望这可以帮助!