Есть ли способ проверить, был ли элемент 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" });
}
});
Есть ли что-нибудь подобное?
Ответы
Ответ 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"))
Ответ 2
Рабочее решение:
$('.MyDripdowns:not([class^="select2"])').each(function (i, obj) {
$(obj).select2({width: "455px"});
})
Ссылки:
Ответ 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
}
}