2

描述

我正在使用一个 jquery 插件它几乎可以做这样的事情:

在此处输入图像描述

这使我可以一个一个地添加每个选项或一个一个地删除每个选项。对于每个选择的选项,我都会创建一个新元素,并将所选选项的作为id

问题

问题是当我从列表中删除一个选项时。例如:

$('#multiple-select').on('change', function(e){
  alert($(e.target).val());
});

如果添加选项,将返回正确的,但如果我们删除选项,则返回null 。我需要能够获得被取消选择的选项的值,以便我可以在另一个元素中删除它。

问题

如何获取取消选择的选项的值以返回实际值而不是 null?还是有另一种方法可以绕过这个问题?

我需要做的就是找到被取消选择的选项并将其从另一个元素中删除(知道元素的 id 是基于选项的值构建的)。

更新

按要求删除代码:

$('body').on('change', benefs, function(e){
  var $nbparts = $(participantNbParts),
      $target = $(e.target),
      $val = $target.val(),
      $name = $target.text();

      if($val == null){
        //this is because we deleted something thus we need to remove it from $nbparts which is a pitty since we don't know what it was before it got deleted
      }else{
        //someone was added
        $(create_row_expense_nb_parts_participant($name, $val)).appendTo($nbparts).show('slow');
        $nbparts.parent().show('fast');
      }
});
4

2 回答 2

3

jQuery selected提供selecteddeselected使用它可以分别识别选定和取消选定的值,例如:

$("#your_element_id").on('change', function (evt, params) {

    var selected = params.selected;
    var removed = params.deselected; //gives you the deselected value

    //assuming your option ids are numbers
    if( removed > 0 ) {
        console.log( "Value removed is:" + removed );
    }

});
于 2015-04-06T10:10:00.453 回答
1

从您拥有的事件描述中的文档change

每当进行选择时,Chosen 都会触发标准 DOM 事件(它还会发送一个 selected 或 deselected 参数,告诉您哪个选项已更改)。

这建议您应该观察事件处理程序在运行时收到的参数,以获取有关(并且很可能是对)已删除/取消选择选项的提示。

于 2015-04-06T10:09:44.390 回答