2009-04-15 58 views
1

我正在使用jQuery捕獲表上的更改事件。該表有許多行,每行有幾個輸入框和一個複選框。爲此,我正在使用事件代表團。我正在捕捉tbody級別的任何更改。這是以下代碼更改表中的事件在IE中失敗

$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

你實際上使用冒泡來獲取祖先元素上的事件,而不是捕獲(哪個IE不支持,jQuery不使用)。不幸的是,雖然onchangebubbles in the DOM specdoes not in IE

我認爲你只需要定位輸入。 (不幸的是'live'功能不支持onchange。)