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

Posted

技术标签:

【中文标题】.chosen.change() - 如何判断它是选择还是取消选择操作【英文标题】:.chosen.change() - how to figure out whether it was a select or a deselect action 【发布时间】:2012-07-25 13:20:37 【问题描述】:

我们如何判断组件上触发的更改事件是选择还是取消选择的结果? 怎样才能只抓取选中值的值或者只抓取取消选中的值呢?

$("#airports-select-2").chosen().change(function(event) 
    console.log('select2 change', event, $(event.target).val());
);

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

【问题讨论】:

如果 Chosen 插件无法在回调中为您提供该信息,您可能必须将所选项目的列表保存在一个数组中,然后在每次 @987654322 时比较和更新该数组@回调被调用 【参考方案1】:

来自选择documentation:

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

  $('select').on('change', function(event, params) 
    // can now use params.selected and params.deselected
  );

【讨论】:

您是否知道如何取消更改事件?假设用户选择和选项并触发更改事件,但基于某些条件我想恢复此选择。 您可以将 嗯.. 我一直在寻找可以自动或轻松恢复的东西,但看起来保存状态并手动恢复是唯一的选择,因为 jquery onchange 在值更改后被触发。 在有很多选择时选择特定选择可以使用$(select#the_class_id).on(......);【参考方案2】:

在您可以触发的每个事件触发上:

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

//Diff and compare the delta here.    

target.data("chosen-values", currentDataSet);

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

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

【讨论】:

【参考方案3】:

所选文档描述了Triggered Events

要在“search-choice-close”上捕捉事件,您可以尝试以下操作:

 $('#selectID').on('change', function(change, deselected)  //selected OR deselected
    //do something
    console.log('Value Deselected');
  );

【讨论】:

以上是关于.chosen.change() - 如何判断它是选择还是取消选择操作的主要内容,如果未能解决你的问题,请参考以下文章

选择的插件更改事件未触发

java如何判断数字的位数?

给定一个二叉树,如何判断它是对称的

给定一个二叉树,如何判断它是对称的

gRPC连接问题:如何判断它是服务器还是客户端?

IE7 默认表单方法是“GET”。如何判断它是用户输入的还是默认的?