我正在使用jquery插件chosen,它几乎可以做到这样:
这允许我逐个添加每个选项或逐个删除每个选项。对于所选的每个选项,我使用所选选项的值创建一个新的元素作为 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');
}
});
答案 0 :(得分:3)
jQuery chosen提供selected
和deselected
分别用于识别选定和取消选择的值,例如:
$("#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 );
}
});
答案 1 :(得分:1)
来自change
事件描述中的documentation
每当做出选择时,Chosen会触发标准DOM事件 (它还会发送一个选定或取消选择的参数,告诉您哪个 选项已更改)。
这表明您应该在运行时观察事件处理程序收到的参数,以获取有关已删除/取消选择选项的提示(并且很可能是对其的引用)。