繁体   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