0

そのため、各コントロールに異なるチェックボックス領域があるいくつかのascxを使用しています。私はもともと使用しました

 $('[type=checkbox]').click ( function(){ code });

そしてそれは仕事をしました、最初は。しかし、チェックボックスを使用して別のコントロールを追加すると、関数は他のチェックボックスでも起動していたので、jsをにアップグレードしました

 $('#chck').click(function(){ code });

しかし、これでは、そのリストの最初のチェックボックスに対してのみイベントが発生します。すべてのクリックに対して発生させるにはどうすればよいですか?

私もこれを試しました:

 $('#chck').each(function(){ $(this).click({ function() { code }); });

これは最初のものでも機能しました

これが私のascxページの例です:

 <asp:Repeater ID="contacts" runat="server">
            <ItemTemplate>
                <tr>
                    <td>
                        <input type="checkbox" id="chck" />
                    </td>
                  .....
                 </tr>
             </ItemTemplate>
  </asp:Repeater>

これが私のJSコードセグメントです

    $(document).ready(function(){
       $("#chck").each(function () {
           $(this).click(function () { onchange($(this)); });
       });
    });
    function onchange(checkbox) {
    // adds contact to list
    }
4

2 に答える 2

3

idsは一意である必要があります。代わりにクラスを使用してください。

<input type="checkbox" class="chck" />
$('.chck').click(function(){ code });
于 2013-03-08T17:51:23.110 に答える
1

を参照using same ids for multiple elemsしてくださいsame page is invalid.

IDs should be unique to each element. When this happens browser only selects first of it.

この問題を解決するには、に変更idする必要がありますclass。だからあなたhave to do same thing with your markup change id to class

<input type="checkbox" class="chck" /> // <----change id to class for every input

これで、スクリプトは次のようになります。

$('.chck').each(function(){ //<-----use '.' notation for class selectors 
     $(this).click(function() { 
         onchange($(this));
     }); 
});
于 2013-03-08T18:00:44.703 に答える