簡體   English   中英

將更改偵聽器附加到jquery選擇的循環中,無法正常工作

[英]Attaching change listener to the jquery-chosen selects in a loop, not working

我試圖在循環中初始化多個選擇的選擇:

var arr = ["#key1", "#key2"];

for (var p in arr) {
    $(arr[p]).chosen().change(function () {
        console.log($(arr[p]).chosen().val());
    });
}

元素在哪里:

<div>
    <select multiple="" id="key1">
        <option value="A1">A1</option>
        <option value="B1">B1</option>
    </select>
</div>
<div>
    <select multiple="" id="key2">
        <option value="A2">A2</option>
        <option value="B2">B2</option>
    </select>
</div>

問題是, 最后一個 “更改”事件處理程序已附加到所有選擇元素。 例如,由於.chosen().val()從“ key2”中獲取值,因此從“ key1”中選擇一個項目將輸出null 有什么建議么?

實際上,我想將每個選定值的選定值存儲到此對象的不同字段中,例如:

var selected_values = {
    selected_keys1 : {},
    selected_keys2 : {}
}

您不需要循環即可執行此操作。 您可以通過用逗號分隔id選擇器來檢索這兩個元素。 然后,您可以在change處理程序中使用this關鍵字引用引發事件的元素。 嘗試這個:

$("#key1, #key2").chosen().change(function () {
    console.log($(this).val());
});

小提琴的例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM