1

我在输入字段上使用 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"
});
4

2 回答 2

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');
});

我已经相应地更新了你的 jsfiddle

于 2013-10-10T21:43:31.707 回答
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;
        }
    })
});

演示:小提琴

注意:还没有看到是否有内置支持来执行此操作,但是自定义实现

于 2013-09-29T02:10:41.257 回答