2009-04-15 6 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 specそれはdoes not in IEです。

入力をターゲットにするだけでいいと思います。 (残念ながら、「ライブ」機能はオンチェンジもサポートしていません)

関連する問題