1

我很困惑为什么这不起作用并且无法调试

我有一组按属性值分组的复选框,并且在每个组的脚下都有一个 checkall 类,当我单击它时,我想将其他复选框切换到相同的状态

jQuery

$(function () {
    $('.checkall').click(function () {
        var myactivemonth=$(this).attr("data-mymonth");
        console.log(myactivemonth);
        var myactivebox="a_"+myactivemonth;
        $('checkbox[data_mymonth=myactivemonth]').attr('checked','checked');
});

html

<input id="alloInv" class="tip_trigger" type="checkbox" data-mymonth="a_October2012" title="13.94" value="2018441" name="alloInv">
<input id="alloInv" class="tip_trigger" type="checkbox" data-mymonth="a_October2012" title="10.94" value="201845" name="alloInv"> 
<input class="checkall" type="checkbox" data-mymonth="October2012">

它看起来一切正常,但方框没有打勾:(

4

2 回答 2

2

你有一系列错误的事情

  1. checkbox应该:checkbox
  2. data_mymonth应该data-mymonth
  3. myactivebox需要动态传递
  4. 从问题中的代码中,您错过了决赛});

还有一些改进

  1. 您应该使用.prop()而不是.attr()元素的实际属性。$(this).data('mymonth');
  2. 用于.data()data-属性中检索值

所以

$(':checkbox[data-mymonth="' + myactivebox + '"]').prop('checked',true);

在http://jsfiddle.net/6Nv3N/工作演示


更新

我错过了你问题的切换部分

要处理切换复选框,您需要将checked属性设置为.checkall元素的属性。

.prop()方式(演示

$(':checkbox[data-mymonth="' + myactivebox + '"]').prop('checked', this.checked);

.attr()方式_

$(':checkbox[data-mymonth="' + myactivebox + '"]').attr('checked', this.checked);
于 2012-12-08T16:28:09.977 回答
0

谢谢这样做,但我确定有一种更简洁的方法来切换复选框的状态?

$(function() {
    $('.checkall').click(function() {
        var myactivemonth = $(this).attr("data-mymonth");
        var mystate = $(this).attr("checked");

            if (mystate==undefined) {mystate=false;};

        console.log(myactivemonth);
        var myactivebox = "a_" + myactivemonth;
        $(':checkbox[data-mymonth="' + myactivebox + '"]').attr('checked',mystate);
    });
});

PS 更新了 jquery squiggle 知道这是一个有用的工具!

于 2012-12-08T17:04:00.113 回答