我在输入字段上使用Select2作为多选。我试图找出被点击的选项,但如果我查看单击选项(“choice-selected”)时抛出的事件,我可以找到的是event.target.value,它是包含所有选定选项的数据数组(选择)。基本上我想访问点击的值,这样我就可以让用户在该特定选项中编辑自定义属性。我怎么能这样做呢?
问题的JSFiddle:http://jsfiddle.net/JtTTF/
$(test).bind("choice-selected", function(e) {
alert(e.target.value);
// this is where i would like to access the clicked choice id so i can edit the custom data attribute "reason"
});
答案 0 :(得分:6)
我也碰到了这个。在检查了select2.js源代码之后,我发现 choice-selected 事件传递了第二个参数:你点击的dom元素。
此dom元素包含一个带有“select2-data”键的数据对象。
您的代码可能如下所示:
$(test).on("choice-selected", function(e, choice) {
var data = $(choice).data('select2-data');
alert(data.reason ? 'Reason: ' + data.reason : 'No Reason');
});
我已相应更新了your jsfiddle。
答案 1 :(得分:0)
尝试
var selected = {};
$(test).change(function () {
var selections = $(this).select2('data');
$.each(selections, function (idx, obj) {
if (!selected[obj.id]) {
selected[obj.id] = obj;
$('#selectedText').text(JSON.stringify(obj));
return false;
}
})
});
演示:Fiddle
注意:尚未看到是否有内置支持来执行此操作,而是自定义实现