2011-10-25 4 views
0

quelqu'un peut me aider avec ce code:

var rows = $(".delete"); //rows to delete 
var irows = $(".insert");//rows to insert 
//delete row 
$.each(rows, function(i ,v) { 
    $(v).click(function() { 
     $(this).closest("tr").fadeOut(300, function() { $(this).remove(); });    
    }); 
}); 

//insert row before 
$.each(irows, function(i, v) { 
    $(v).click(function() { 
     var irowIndex = $(this).closest("tr").index(); 
     var newRow = "<tr class=\"dataRow\">" + " 
        "<td><input type=\"button\" value=\"&#8597\" class=\"drag\" /><input type=\"button\" value=\"&#187;\" class=\"insert\" /><input type=\"button\" value=\"x\" class=\"delete\" /></td><td><input type='hidden' name='records_id[]' /><input style=\"text-align: center\" type='text' class='itemno' name='existing_itemno[]' size='5' /></td>" + 
        "<td>&nbsp;</td>" + 
        "<td>&nbsp;</td>" + 
        "<td>&nbsp;</td></tr>"; 
     $("#tbox tr:eq(" + irowIndex + ")").before(newRow); 
    }); 
}); 

<table id="#tbox"> 
    <tr> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
    </tr> 
</table> 

Ajout et suppression de travaux de ligne, mais le bouton dans les lignes ajoutées qui déclenche la suppression/insertion ne ne fonctionne pas. Je veux dire que si vous ajoutez une ligne et que vous cliquez sur le bouton Supprimer de cette ligne, cela ne fonctionnera pas. J'ai déjà cherché sur le web, et j'ai trouvé bind(), live(), et delegate. Le problème est comment je peux l'utiliser à l'intérieur .each. Ou y a-t-il une meilleure approche que celle-ci? S'il vous plaît aider.

Répondre

2

Vous pouvez vous débarrasser de votre each et faire quelque chose comme -

$('.delete').live('click',function() { 
    $(this).closest("tr").fadeOut(300, function() { $(this).remove(); }); 
}) 

Cela devrait ajouter le gestionnaire de clic à tous les .delete boutons de la page, y compris ceux qui sont générées dynamiquement.

+1

edit - cela a fonctionné grâce! – Gen

+0

.live est maintenant obsolète. Utilisez .delegate à la place. –