.chosen.change() - 如何确定它是选择还是取消选择操作

one*_*ros 18 jquery jquery-chosen

我们如何判断组件上触发的更改事件是选择还是取消选择的结果?我们如何才能获取所选值的值或仅取消选择的值?

$("#airports-select-2").chosen().change(function(event) {
    console.log('select2 change', event, $(event.target).val());
});
Run Code Online (Sandbox Code Playgroud)

此代码为我提供了迄今为止在多选组件上选择的所有值?如何将其更改为仅给出新选择或取消选择的组件的值?

Evg*_*eny 38

从选择的文件:

无论何时进行选择,Chosen都会触发标准DOM事件(它还会发送一个选定取消选择的参数,告诉您哪个选项已更改).

  $('select').on('change', function(event, params) {
    // can now use params.selected and params.deselected
  });
Run Code Online (Sandbox Code Playgroud)


Vul*_*ary 3

在每次事件触发时,您都可以触发:

var  target = $(event.target),
     priorDataSet = target.data("chosen-values"),
     currentDataSet = target.val();

//Diff and compare the delta here.    

target.data("chosen-values", currentDataSet);
Run Code Online (Sandbox Code Playgroud)

在更新 DOM 元素的数据之前,您可以比较以确定值集之间的增量。如果它在旧版本中而不在新版本中,则会被删除。如果它在新的而不是旧的中,那么它就被添加了。

如果您需要一个如何确定两个数组之间的增量的示例,请告诉我,我也会为此提供一个示例。