我在这里创造了一个小提琴:http://jsfiddle.net/393Yk/
我有两列,每列中我基本上都有一个嵌套无序列表的副本,其中包含很多复选框。
当我选中并取消选中左侧栏中的复选框时,右栏中的相应复选框也应该检查并取消选中。
这个想法实际上是隐藏右侧的元素,直到它们在左侧被选中,因此右侧应该只显示所选的内容(不是所有元素)。
我一次只采取这一步,我在查看右手边复选框时检查或取消选中它是否有问题。
所以它第一次工作,但在第一次之后,它没有。
解决检查和取消检查的代码在这里:
$('.mod-left .wf-check').attr('checked', false).change(function(){
var sel = $(this).data("val");
if( $(this).is(":checked") ){
console.log("Checked " + sel);
$('.mod-right input.wf-check-' + sel + '[type=checkbox]').attr('checked', true);
} else {
console.log("Unchecked " + sel);
$('.mod-right input.wf-check-' + sel + '[type=checkbox]').attr('checked', false);
}
});
有人可以帮我选择复选框并按类名操作吗?
谢谢。
答案 0 :(得分:1)
以下似乎有效(即不使用jquery attr()函数)。
if( $(this).is(":checked") ){
$('.mod-right input.wf-check-' + sel + '[type=checkbox]')[0].checked = true;
} else {
$('.mod-right input.wf-check-' + sel + '[type=checkbox]')[0].checked = false;
}
当然,编码更好:
$('.mod-right input.wf-check-' + sel + '[type=checkbox]')[0].checked = $(this).is(':checked');
答案 1 :(得分:1)
改变你的地方
$('.mod-right input.wf-check-' + sel + '[type=checkbox]').attr('checked',...);
到
$('.mod-right input.wf-check-' + sel + '[type=checkbox]').prop('checked',...);