如何销毁属于特定 class 的所有 select2 选择

How to destroy all select2 selects that belongs to a specific class

我正在开发一个软件,其中所有 select 元素都使用 select2 库。 在页脚中有这样的代码:

$('select').select2();

现在我正在开发一个新屏幕,一些 selects 会使用 select2 而其他人不会,所以我为这些创建了 class“.noSelect2”不应该有 select2。 当我输入这段代码时,它只会破坏第一个 select:

$('.noSelect2').select2('destroy')

我该怎么做才能破坏所有元素?

使用 class 通过 Select2 定位某些内容的问题是 Select2 在过去将 classes 复制到容器元素,因此您可以在那里应用 CSS。因此,使用 class 定位 <select> 也会导致定位 <div> 或其他容器元素,这会触发错误。

简单的解决方案是在 class 选择器前面添加 select,这样它只针对 <select> 元素。

$('select.noSelect2').select2('destroy')

在 4.0.0 there is a known bug 中调用 select2('anything') 因为它在选择多个实例时不一致。 Select2 的下一版本 (4.0.1) 应该会解决这个问题。