J'ai une table de 50 lignes impaires avec 11 colonnes. Chaque rangée a un id
composé de id="row_<clientid>_rownumber"
. Il y a une case à cocher dans la deuxième colonne avec id="group_<clientid>_<petid>_rownumber"
Existe-t-il un moyen rapide de supprimer les lignes de table avec jQuery?
Redacted Screenshot http://www.forsythesit.com.au/res/img/slowrowremoval.jpg
Lorsque l'utilisateur clique sur une case à cocher Je veux supprimer toutes les lignes, sauf celles qui appartiennent au client sélectionné. J'ai le code qui fonctionne comme suit:
var sClient = $(this).attr("id").substring(6); // trim off group_
sClient = sClient.substring(0,sClient.indexOf("_")); // trim off anything after clientid
$("tr[id^=row_]").not("tr[id^=row_" + sClient + "]").remove();
Le problème est qu'il faut si longtemps que dans IE je reçois l'avertissement « script est trop long ».
Existe-t-il une méthode plus rapide pour supprimer plusieurs lignes?
BTW: Il faut 4,4 secondes en utilisant jQuery 1.4.3 et 1.3 secondes avec jQuery 1.4.2
Problème résolu grâce à tous. Dernier indice fourni par @VisusZhao. Ceci est extrait de travail final:
var KeepRows = $("#bookingstable tbody tr[id^=row_" + sClient + "_]");
$("#bookingstable tbody").empty();
$("#bookingstable tbody").append(KeepRows);
Merci à tous
Etes-vous sûr que c'est ce qui cause le retard? On dirait que pour ~ 50 lignes cela ne devrait pas prendre très longtemps du tout. –
Je doute que c'est le code pour obtenir la chaîne de client qui est lente, mais cela peut être un peu plus propre: 'var sClient = $ (this) .attr (" id "). Split ('_') [1] ; 'divise la chaîne par des traits de soulignement puis attrape le bit du milieu. – scunliffe
essayez d'utiliser le: sélecteur not() – bevacqua