【问题标题】:change event on a table fails in IE表上的更改事件在 IE 中失败
【发布时间】:2010-10-19 12:04:52
【问题描述】:

我正在使用 jQuery 来捕获表上的更改事件。该表有很多行,每行有几个输入框和一个复选框。为此,我正在使用事件委托。我正在捕获 tbody 级别的任何更改。这是下面的代码

$j('#orderItems tbody').change(function (event) {
    var target = $j(event.target);
    var nodeName = $j(target).attr('nodeName').toLowerCase();
    if (nodeName == 'input') {
        if ($j(target).hasClass('partnum')) {
            var val = $j(target).attr('value');
            dsOrder.getItem(target);
            dsOrder.updateActiveIndex(target);
        }
        if ($j(target).hasClass('qty')) {
            var val = $j(target).attr('value');
            dsOrder.updateQty(target);
            dsOrder.updateActiveIndex(target);
        }
        if ($j(target).hasClass('unitprice')) {
            var val = $j(target).attr('value');
            dsOrder.updatePrice(target);
            dsOrder.updateActiveIndex(target);
        }
    }
})

此代码在 Firefox 中运行良好,但更改事件未在 IE 中捕获。我想使用事件委托来解决这个解决方案,而不是将每个事件附加到每个输入元素上。我还想避免使用 jQuery 来定位每个元素,因为表格行是动态构建的,并且取消绑定/绑定事件似乎有点混乱(只是我的看法)

关于如何让它发挥作用的任何想法?

【问题讨论】:

    标签: javascript jquery events delegation


    【解决方案1】:

    您实际上是在使用冒泡来获取祖先元素上的事件,而不是捕获(IE 不支持且 jQuery 不使用)。不幸的是onchangebubbles in the DOM specdoes not in IE

    我认为您只需要针对输入。 (不幸的是,“live”功能也不支持 onchange。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多