0
<table id="area-work-time" class="table" data-user-message="work time">
<tbody>
  <tr class="work-time-block">
    <td class="days">
      <label class="checbox_label">            
      <span class="checkbox" style="background-position: 0px -68px;"></span>
      <input type="checkbox" class="styled" data-content-key="Check Monday" data-original-value="False">
      <span class="work-time-text">Monday</span>
      </label>
    </td>
  </tr> 
</tbody>
</table>

Chrome と Firefox で動作する次のコードがありますが、そのソリューションは次を使用して IE8 で失敗します。

$.each($('.work-time-block'), function () {
    alert("inside work-time-block");
    $('input:checkbox').change(function () {
        alert("inside change event");
    });
});

これはコードブロック全体です

これは、代替構文$('input[type="checkbox"]' ...なども機能しないことを示唆しています。クラスがそれぞれに1つずつ、7回表示されますinside work-time-block。アラート ボックスが表示されません。Chrome と Firefox で毎​​回ポップアップします。<tr>work-time-blockinside change event

スクリプトの実行速度が時々遅くなるという IE 8 以外のエラーは発生しません。

私はこれを書いたのではなく、継承しました。これが正しい方法ではないことはわかっていますが、これをcheckboxIE 8 に適用する正しい構文を見つけるために 1 時間以上試みましたが、成功しませんでした。だから私は解決のためにstackoverflow集団に訴えます。

4

3 に答える 3

3

IE8ブラウザモードおよびIE8ドキュメントモードで実行されているIE10でテスト済み:

$('input:checkbox').change(function() {
    if ($(this).is(':checked')) {
        alert('checked');
    } else {
        alert('unchecked');
    }
});​

http://jsfiddle.net/33uEP/1/

于 2012-12-06T23:19:28.997 に答える
1

これは機能するはずです:

$("input[type='checkbox']").on("change",function(){window.alert("checked");});
于 2012-12-06T23:16:02.290 に答える
0

テーブル データが JS によって追加される場合は、次のような on() ハンドラーを追加することをお勧めします。

$('#area-work-time').on('change','input[type="checkbox"]',function(){
    alert("inside change event");
});

これにより、動的に作成された要素のイベント トリガーが作成されます。

于 2012-12-06T23:50:35.487 に答える