我对js / jquery很陌生。对于ID为check $(其中$是序列号)的每个复选框,我想切换使用相同check $(但作为类)的周围范围的“同意”类。我不想对匹配复选框的列表进行硬编码,因为这可能会有所不同。
这是我的代码。此功能按预期工作:
agree = function (checkbox, span) {
$(checkbox).change(function(){
$(span).toggleClass('agree');
});
};
这就是我要传递给以上功能的功能,该功能不起作用:
$(function() {
var elemid = 'check',
checks = Array($('[id^='+elemid+']').length);
console.log(checks);
for (i=0; i < checks; i++) {
agree('#'+elemid+checks[i], "."+elemid+checks[i]);
}
});
console.log(checks)返回[undefined×4]。元素的数量是正确的,但是我不知道为什么它是未定义的,或者甚至不重要。
以下代码按预期工作,但正如我所说,我宁愿不必指定每个匹配的元素:
$(function() {
var checks = ["check1", "check2", "check3", "check4"];
for (i=0; i < checks.length; i++) {
agree('#'+checks[i], "."+checks[i]);
}
});
谢谢。
编辑:感谢Jack,我忽略了最简单的方法。我向所有复选框和跨度添加了相同的类,并通过以下方式解决了该问题:
$('input.check').change(function(){
$(this).closest('span.check').toggleClass('agree');
});
最佳答案
我可能完全错过了一些东西,但是我很确定您只是试图将更改处理程序附加到每个复选框。在这种情况下,您可以给他们全部相同的班级。我也在猜测您的html结构的跨度。
以供参考:
http://api.jquery.com/closest/
http://docs.jquery.com/Tutorials:How_jQuery_Works
$('.yourcheckboxclass').change(function(){ //grab all elements with this class and attach this change handler
$(this).closest('span').toggleClass('agree');
});
关于javascript - JavaScript阵列无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11471834/