有什么方法可以检查元素是否已应用 jquery select2?
Is there any way to check if an element has jquery select2 already applied to it?
我想将 select2 应用于页面上的一堆 jquery 元素,这些元素都具有相同的 class 名称,但看起来如果我调用 select2()已经调用了 select2() 的元素然后它爆炸了。这是我的代码
$('.MyDropdowns').each(function (i, obj) {
$(obj).select2({ width: "455px" });
});
所以我想要这样的东西:
$('.MyDripdowns').each(function (i, obj) {
if (!$(obj).HasSelect2Initiatized)
{
$(obj).select2({ width: "455px" });
}
});
有这样的东西吗?
您可以检查元素是否具有 select2
属性
$('.MyDripdowns').each(function (i, obj) {
if (!$(obj).data('select2'))
{
$(obj).select2({ width: "455px" });
}
});
编辑
正如@Fr0zenFyr 在他对 v4.0 的评论中所说,您可以使用:
if (!$(obj).hasClass("select2-hidden-accessible"))
工作解决方案:
$('.MyDripdowns:not([class^="select2"])').each(function (i, obj) {
$(obj).select2({width: "455px"});
})
链接:
以上回答基本正确。
但是当我们在同一页面上动态添加元素并将 select 2 应用于新创建的元素时,它会产生问题。
那时 selector 不仅要使用 class 还要使用输入类型来指定。 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
}
}
我想将 select2 应用于页面上的一堆 jquery 元素,这些元素都具有相同的 class 名称,但看起来如果我调用 select2()已经调用了 select2() 的元素然后它爆炸了。这是我的代码
$('.MyDropdowns').each(function (i, obj) {
$(obj).select2({ width: "455px" });
});
所以我想要这样的东西:
$('.MyDripdowns').each(function (i, obj) {
if (!$(obj).HasSelect2Initiatized)
{
$(obj).select2({ width: "455px" });
}
});
有这样的东西吗?
您可以检查元素是否具有 select2
属性
$('.MyDripdowns').each(function (i, obj) {
if (!$(obj).data('select2'))
{
$(obj).select2({ width: "455px" });
}
});
编辑
正如@Fr0zenFyr 在他对 v4.0 的评论中所说,您可以使用:
if (!$(obj).hasClass("select2-hidden-accessible"))
工作解决方案:
$('.MyDripdowns:not([class^="select2"])').each(function (i, obj) {
$(obj).select2({width: "455px"});
})
链接:
以上回答基本正确。
但是当我们在同一页面上动态添加元素并将 select 2 应用于新创建的元素时,它会产生问题。
那时 selector 不仅要使用 class 还要使用输入类型来指定。 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
}
}