我对 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');
});