Select2 off('change').on('change'.....) 无法更改所选选项

Select2 off('change').on('change'.....) does not able to change the selected option

我用的是Select2-4.0.0 并且

$gameSelect.select2().on("change",function(e){....}

工作正常。

但是当我将它链接起来时('change')像:

$gameSelect.select2().off('change').on("change",function(e){....}

事件已触发,但所选项目在 UI 没有更改。

这是为什么?

看起来 select2-4.0 正在向 select 元素添加自己的更改处理程序,当您说 off('change') 也被删除时,这就是原因。

为了解决此类问题,我们有事件 name spacing 因此,对您的处理程序使用命名空间并使用它来删除它们,例如

$('#my-select').select2().off('change.mychange').on('change.mychange', function () {
    //your code
});

演示:Fiddle

要保留 select2 的设置,请使用此代码代替公认的解决方案:

$('#my-select').off('change.mychange').on('change.mychange', function () {
    //your code
});

您不需要恢复 .select2()。没必要,而且更短。