有没有办法检查一个元素是否已经应用了jquery select2?

leo*_*ora 32 jquery jquery-select2

我想将select2应用于页面上的一堆jquery元素,这些元素都具有相同的类名,但是如果我在已经调用了select2()的元素上调用select2(),那么它就会爆炸.这是我的代码

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

所以我想要这样的东西:

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

有这样的事吗?

sem*_*gay 65

你可以检查元素是否有select2属性

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

编辑

正如@ Fr0zenFyr在他对v4.0的评论中所说,你可以使用:

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

  • 至少对于v4.0,`if(!$(obj).hasClass(s​​elect2-hidden-accessible))`test应该有效.我认为它不再适用于`data`属性. (10认同)
  • 现在它在官方文档中 https://select2.org/programmatic-control/methods#checking-if-the-plugin-is-initialized (3认同)