2009-04-15 6 views
1

J'utilise jQuery pour capturer un événement de modification sur une table. La table a beaucoup de lignes et chaque rangée a quelques boîtes d'entrées et une case à cocher. Pour ce faire, j'utilise la délégation d'événements. Je capture tout changement au niveau du corps. Voici le code ci-dessousL'événement de modification sur une table échoue dans 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); 
       } 
      } 
     }) 

Ce code fonctionne très bien dans Firefox, mais l'événement de changement n'est pas capturé dans IE. Je voudrais aborder cette solution en utilisant la délégation d'événement plutôt que d'attacher chaque événement sur chaque élément d'entrée. Je voudrais également éviter de cibler chaque élément en utilisant jQuery car les lignes de la table sont construites dynamiquement et les événements de liaison/reliure semblent un peu en désordre (juste mon opinion)

Des idées pour que cela fonctionne?

Répondre

1

Vous utilisez réellement le bouillonnement pour récupérer l'événement sur l'élément ancêtre, pas la capture (que IE ne supporte pas et que jQuery n'utilise pas). Malheureusement tandis que onchangebubbles in the DOM spec il does not in IE.

Je pense que vous devrez simplement cibler les entrées. (Malheureusement, la fonction 'live' ne supporte pas onchange non plus.)

Questions connexes