jQuery在两个单独的div中按类名选择复选框

时间:2014-07-24 20:45:55

标签: javascript jquery html css checkbox

我在这里创造了一个小提琴: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);

    }
});

有人可以帮我选择复选框并按类名操作吗?

谢谢。

2 个答案:

答案 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',...);

Fiddle