web-dev-qa-db-ja.com

Select2でドロップダウンが開いているかどうかを確認するにはどうすればよいですか?

私は select2 と私のサイトで使用しています。ドロップダウンが開いているか閉じているかを、ある時点で知る必要があります。 documentation を調べましたが、これをどのように行うことができるかわかりません。たとえば、次のようなものがいいでしょう:

if ($('select').select2('isOpen') === true) { ... }

助言がありますか?

9

コード検査を行うと、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年から更新されているようです。 以下のuser1636505の回答を参照

7
jwatts1980

select2のバージョン4.0では、select要素でselect2:openingselect2:openselect2:closing、およびselect2:closeイベントをリッスンできます。次に例を示します。

$('select').on('select2:open', function (e) {
    // select2 is opened, handle event
});
18
user1636505

Select24.0にはisOpenメソッドがあります。 #mySelectがHTMLselect要素の場合、次のようになります。

$('#mySelect').data('select2').isOpen()

... Select2の状態に応じて、trueまたはfalseを返します。

9
Paul

Select2 4.0.6以降、これは次のように更新されています。

$("#foo").select2("isOpen")

これはtrue/falseを返します

お役に立てれば!

4
MigratingCub

changeは、オプションが選択または削除されるたびに発生します。

select2:openは、ドロップダウンが開かれるたびに発生します。 select2:openingはこの前に発生し、防止できます。

select2:closeは、ドロップダウンが閉じられるたびに発生します。 select2:closeingはこの前に発生し、防止できます。

select2:selectは、結果が選択されるたびに発生します。 select2:selectingはこの前に実行され、防止できます。

select2:unselectは、結果が選択解除されるたびに発生します。 select2:unselectingはこの前に発生し、防ぐことができます。

2
yousef

$( 'select')。select2( 'isFocused');

https://github.com/select2/select2/issues/39

0
Robin

それは完璧に動作します。

$(".select2-container").is(":visible")
0
Mahfuzur Rahman

これを行うことをお勧めします:

var select2 = $('#selectorname').data('select2');
if (select2.opened()) {
        //do it
    } else {
        //dont do it
    }
0
fedda