Подтвердить что ты не робот

Есть ли способ проверить, был ли элемент jquery select2 уже применен к нему?

Я хочу применить select2 к кучке элементов jquery на странице, которые имеют одинаковое имя класса, но похоже, что если я вызываю select2() на элементе, который уже имеет вызванный select2(), затем он взрывается. вот мой код

 $('.MyDropdowns').each(function (i, obj) {
    $(obj).select2({ width: "455px" });
});

поэтому я хочу что-то вроде:

 $('.MyDripdowns').each(function (i, obj) {
    if (!$(obj).HasSelect2Initiatized)
    {
        $(obj).select2({ width: "455px" });
    }
});

Есть ли что-нибудь подобное?

4b9b3361

Ответ 1

вы можете проверить, имеет ли элемент атрибут select2

$('.MyDripdowns').each(function (i, obj) {
    if (!$(obj).data('select2'))
    {
        $(obj).select2({ width: "455px" });
    }
});

EDIT

Как сказал @Fr0zenFyr в своем комментарии для v4.0, вы можете использовать:

if (!$(obj).hasClass("select2-hidden-accessible"))

Ответ 3

Выше ответ почти правильный.

Но это создает проблему, когда мы динамически добавляем элементы на одной странице и применяем выбор 2 к вновь созданному элементу.
В это время селектор должен быть указан с использованием не только класса, но и типа ввода. Справочный код PFB.

$('inputp[type="text"].MyDripdowns').each(curr_idx, curr_elem){
    //Check if select 2 is already applied or not
    if($(curr_elem).hasClass('.select2-offscreen')){
      //Select 2 is already applied to this element
    }
    else{
       //Apply Select 2 to this element 
    }
}