jquery中缺少参数

时间:2013-07-03 17:35:41

标签: jquery twitter-bootstrap

我有像这样的jquery代码

HTML : 
<table class="display">
  <tr>
    <td style="vertical-align:top;">
    <table class="display">
      <thead>
        <tr>
          <td><label><input type="checkbox" class="menu_3"/> menu 3</label></td>
        </tr>
      </thead>
    </table>
    <table class="display table-hover">
      <tbody>
            <tr>
            <td><label><input type="checkbox" class="submenu_3"/> submenu 3</label></td>
        </tr>
                <tr>
            <td><label><input type="checkbox" class="submenu_3"/> submenu 3</label></td>
        </tr>
              </tbody>
    </table>
    </td>
</td>
</tr>
</table>
JQUERY
for(i=1;i<=6;i++){
        $(".menu_"+i).change(function(){
            $(".submenu_"+i).attr("checked", this.checked);
        });
    }

我想查看menu 3,然后检查所有submenu 3, 并以某种方式它不起作用,因为i参数丢失..

我不知道发生了什么......

帮帮我们..

2 个答案:

答案 0 :(得分:1)

应该是

for(i=1;i<=6;i++){
    (function(it){
        $(".menu_"+it).change(function(){
            $(".submenu_"+it).prop("checked", this.checked);
        });
    })(i)
}

问题是闭包变量i的使用,也准备好this question的答案

答案 1 :(得分:1)

您可以使用带有选择器的选项来选择所有.menu_*元素,然后使用slice()来获取数字以选择相关的.submenu_*元素等。无需循环:< / p>

$('[class^="menu_"]').on('change', function(){
    $(".submenu_" + this.className.slice(-1)).prop("checked", this.checked);
});

FIDDLE