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"]' ...等也不起作用,我看到了inside work-time-block7 次,每个<tr>都有一个work-time-block类;我从来没有看到inside change event警告框,它每次在 Chrome 和 Firefox 上都会弹出。

除了 IE 8 偶尔会抱怨脚本运行缓慢之外,我没有收到任何错误。

我没有写这个,我继承了它,我知道这不是正确的方法,但我已经尝试了一个多小时来找出正确的语法,将它应用于checkboxIE 8 中的 a 但没有成功,所以我呼吁 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 回答