IE中的更改事件在表上失败

时间:2009-04-15 02:38:17

标签: javascript jquery events delegation

我正在使用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来定位每个元素,因为表行是动态构建的,并且解绑/绑定事件看起来有点乱(只是我的意见)

有关如何使其发挥作用的任何想法?

1 个答案:

答案 0 :(得分:1)

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

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