将更改侦听器附加到 jquery-chosen 循环选择,不起作用
Attaching change listener to the jquery-chosen selects in a loop, not working
我正在尝试在循环中初始化多个选择的select:
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>
问题是,last 'change' 事件处理程序正在附加到所有 select 元素。例如,selecting 来自 "key1" 的项目打印 null
,因为 .chosen().val()
从 "key2" 获取值。有什么建议吗?
实际上我想将每个选择的 selected 值存储到不同的字段中,例如,存储到这个对象的:
var selected_values = {
selected_keys1 : {},
selected_keys2 : {}
}
您不需要循环来执行此操作。您可以通过用逗号分隔 id
选择器来检索这两个元素。然后,在 change
处理程序中,您可以使用 this
关键字引用引发事件的元素。试试这个:
$("#key1, #key2").chosen().change(function () {
console.log($(this).val());
});
我正在尝试在循环中初始化多个选择的select:
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>
问题是,last 'change' 事件处理程序正在附加到所有 select 元素。例如,selecting 来自 "key1" 的项目打印 null
,因为 .chosen().val()
从 "key2" 获取值。有什么建议吗?
实际上我想将每个选择的 selected 值存储到不同的字段中,例如,存储到这个对象的:
var selected_values = {
selected_keys1 : {},
selected_keys2 : {}
}
您不需要循环来执行此操作。您可以通过用逗号分隔 id
选择器来检索这两个元素。然后,在 change
处理程序中,您可以使用 this
关键字引用引发事件的元素。试试这个:
$("#key1, #key2").chosen().change(function () {
console.log($(this).val());
});