checkAll属性没有触发?

时间:2012-12-08 16:22:53

标签: jquery

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

我有一组复选框按属性值分组 并且当我点击这个时我想在其他复选框切换到相同的状态时,在每个组的脚下都有一个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">

显示一切正常,但方框没有勾选:(

2 个答案:

答案 0 :(得分:2)

你有一系列错误的事情

  1. checkbox应为:checkbox
  2. data_mymonth应为data-mymonth
  3. myactivebox需要动态传递
  4. 来自问题中的代码,您错过了最终的});
  5. 还有一些改进

    1. 您应该使用.prop()代替.attr()来获取元素的实际属性。 $(this).data('mymonth');
    2. 使用.data()data-属性
    3. 中检索值

      所以

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

      http://jsfiddle.net/6Nv3N/

      的工作演示

      <强>更新

      我错过了 切换 部分问题

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

      .prop()方式(demo

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

      .attr()方式

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

答案 1 :(得分: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 tnow,这是一个有用的工具!