2013-09-29 58 views
1

我在輸入字段上使用Select2作爲多選。我試圖找出正在被點擊的選項,但如果我查看點擊選項(「選擇選擇」)時發生的事件,我只能找到event.target.value,它是包含所有選定選項的數據數組(選擇)。基本上我想訪問點擊的值,所以我可以讓用戶在該特定選項中編輯自定義屬性。我怎麼能這樣做呢?在Select2倍數中獲取/設置點擊選擇的值

的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" 
}); 

回答

6

我也遇到了這個問題。在檢查了select2.js源代碼後,我發現選擇的事件傳遞了第二個參數:您單擊的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

+0

您的解決方案完美無缺。非常感謝! –

+1

您能否分享一下您使用的Select2版本來實現?在當前文檔中,我找不到任何選擇選擇的事件:http://ivaynberg.github.io/select2/#documentation – Marklar

+0

@Marklar,你找到答案了。我也沒有找到選擇選擇的事件。大衛你使用哪個版本? – Erlan

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

注:有沒有看到是否有內置支持要做到這一點,但定製實施