0

私はこのような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

私は何が起こるかわからない..

みんな助けて..

4

2 に答える 2

1

そのはず

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

問題はクロージャー変数の使用法であり、この質問iに対する答えも用意されています

于 2013-07-03T17:38:53.493 に答える
1

セレクターで始まるを使用してすべての.menu_*要素を選択slice()し、番号を取得して関連する.submenu_*要素などを選択することができます。ループは必要ありません:

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

フィドル

于 2013-07-03T17:39:21.117 に答える