私は select2 と私のサイトで使用しています。ドロップダウンが開いているか閉じているかを、ある時点で知る必要があります。 documentation を調べましたが、これをどのように行うことができるかわかりません。たとえば、次のようなものがいいでしょう:
if ($('select').select2('isOpen') === true) { ... }
助言がありますか?
コード検査を行うと、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の回答を参照 。
select2
のバージョン4.0では、select
要素でselect2:opening
、select2:open
、select2:closing
、およびselect2:close
イベントをリッスンできます。次に例を示します。
$('select').on('select2:open', function (e) {
// select2 is opened, handle event
});
Select24.0にはisOpen
メソッドがあります。 #mySelect
がHTMLselect要素の場合、次のようになります。
$('#mySelect').data('select2').isOpen()
... Select2の状態に応じて、trueまたはfalseを返します。
Select2 4.0.6以降、これは次のように更新されています。
$("#foo").select2("isOpen")
これはtrue/falseを返します
お役に立てれば!
change
は、オプションが選択または削除されるたびに発生します。
select2:open
は、ドロップダウンが開かれるたびに発生します。 select2:openingはこの前に発生し、防止できます。
select2:close
は、ドロップダウンが閉じられるたびに発生します。 select2:closeingはこの前に発生し、防止できます。
select2:select
は、結果が選択されるたびに発生します。 select2:selectingはこの前に実行され、防止できます。
select2:unselect
は、結果が選択解除されるたびに発生します。 select2:unselectingはこの前に発生し、防ぐことができます。
$( 'select')。select2( 'isFocused');
それは完璧に動作します。
$(".select2-container").is(":visible")
これを行うことをお勧めします:
var select2 = $('#selectorname').data('select2');
if (select2.opened()) {
//do it
} else {
//dont do it
}