Javascript 如何迭代jQuery中的复选框列表?
不起作用;我收到的错误是,Javascript 如何迭代jQuery中的复选框列表?,javascript,jquery,Javascript,Jquery,不起作用;我收到的错误是,val和is未定义。我想反复检查对话框消息元素中的复选框,以便查看哪些复选框被选中,并为那些被选中的复选框执行一些其他代码,但这些错误正在发生。使用jQuery。each()函数: JQuery有.each() $('div')。每个(函数(idx){console.log(idx,this)}) 此为当前元素。使用$的一个优点是,这里的每一个都可以说是更干净、可读性更强的代码,而且您还可以获得链接的好处 但是值得注意的是(尽管可能与您的示例无关),for循环在迭代大
val
和is
未定义。我想反复检查对话框消息
元素中的复选框,以便查看哪些复选框被选中,并为那些被选中的复选框执行一些其他代码,但这些错误正在发生。使用jQuery。each()函数:
JQuery有.each()
$('div')。每个(函数(idx){console.log(idx,this)})
此
为当前元素。使用$的一个优点是,这里的每一个都可以说是更干净、可读性更强的代码,而且您还可以获得链接的好处
但是值得注意的是(尽管可能与您的示例无关),for循环在迭代大型元素集合时很可能会执行得更好。比如你可以这样写
jQuery.each(jQuery("#dialog-message input[type='checkbox']"), function(index, chkbox) {
alert(chkbox.val() + " " + chkbox.is("checked"));
});
let test = $('input');
for(let i = 0; i < test.length; i++){
console.log(test[i].checked)
}
for…in
的行为不符合您的预期
在您的例子中,chkbox
不是复选框元素;它是一个整数,表示集合中项的索引。整数既没有.value
也没有.checked
属性,因此出现未定义
错误
相反,请使用jQuery的:
$(“#对话框消息输入[类型=复选框]”)。每个(函数(){
log(`this.value}被选中:${this.checked}`);
});代码>
正确的jQuery方法是。在函数内部,使用$(this)
处理当前元素。您的最终目标是什么?如果您试图仅获取选中的输入,则无需对其进行迭代-只需使用的.可能的副本作为参考,在
中使用的而不是中的,$(chkbox)
而不是将修复您的代码。这不是重复,Chris链接到的问题与如何用于…in/of循环无关。此问题和选定的答案添加了有用的信息。对于您的代码,chkbox
是一个HTMLInputElement,而不是jQuery对象。感谢您使用each
方法和:checked
选择器工作!
let test = $('input');
for(let i = 0; i < test.length; i++){
console.log(test[i].checked)
}
test = $('input');
for(let i in test){
if(!test.hasOwnProperty(i)) {
continue ;
}
console.log(test[i].checked)
}