2

ASP.NET でレンダリングされた CheckBox があります。クリックするとjQueryにイベントをキャプチャさせたいのですが、なぜかうまくいきません。

これは私がこれまで行っていることです:

ASP.NET

<table>
 <tr>
  <td>
   <asp:CheckBox runat="server" ClientIDMode="Static" 
                 id="testcb" name="testcb" />
  </td>
 </tr>
</table>

jQuery

$("#testcb").click(function () {
    if ($(this).is(':checked')) alert("checked");
});

ブラウザからのソースコードは次のとおりです。

<tr>
 <td>
  <span name="testcb">
   <input id="testcb" type="checkbox" 
          name="ctl00$ctl00$bodyContent$phMainContent$testcb">
  </span>
 </td>
</tr>
4

3 に答える 3

4

この問題は、問題の要素がレンダリングされる前に jQuery スクリプトが起動されている可能性が高いと思います。

次のことを試してください。

<script type="text/javascript">
  $(document).on('ready', function () {
      $("#testcb").on('click', function () {
          var $cb = $(this);
          if ($cb.is(':checked')) {
              alert("checked");
          }
      });
  });
</script>

この部分がないと、ドキュメントがバインドされる$(document).on('ready' ...前にブラウザーで完全にレンダリングされることが保証されません。.click()さらに、.on()呼び出される前に存在しない要素でも機能する必要があります (.live()以前のバージョンの jQuery の古い関数と同様)。

例として、この jsFiddleを参照してください。

于 2012-11-29T21:43:08.697 に答える
2

これを試すことができます:

$(document).ready(function() {
  $("#testcb").click(function(){
    if ($(this).attr("checked") == "checked"){
      alert("checked");
    } else {
      alert("unchecked");
    }
  });
});
于 2012-11-29T20:12:56.147 に答える
1

ASP チェック ボックスは実際にはスパンと入力に解決されるため、おそらくチェック ボックスの最初の子をチェックする必要があります。

$("#testcb").click(function () {
        if ($(this).children(':first').is(':checked')) alert("checked");
 });

編集:

私は通常、チェックボックスの宣言で onclick を設定するので、これが機能するかどうかはわかりませんが、これを試してください:

$("#testcb").children(':first').click(function () {
        alert('fire!');
        if ($(this).is(':checked')) alert("checked");
 });
于 2012-11-29T19:46:23.340 に答える