Mam tabelę z 50 nieparzystych wierszy z 11 kolumn. Każdy wiersz ma unikalny id
składający się z id="row_<clientid>_rownumber"
. Nie ma wyboru w drugiej kolumnie z id="group_<clientid>_<petid>_rownumber"
Czy istnieje szybki sposób na .remove wiersze tabeli z jQuery
Redacted Screenshot http://www.forsythesit.com.au/res/img/slowrowremoval.jpg
gdy użytkownik kliknie pole wyboru Chcę usunąć wszystkie wiersze z wyjątkiem tych, które należą do wybranego klienta. Mam kod, który działa następująco:
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();
Problemem jest to trwa tak długo, że w IE otrzymuję „skrypt trwa zbyt długo” ostrzeżenie.
Czy istnieje szybsza metoda usuwania wielu wierszy?
BTW: To trwa 4,4 sekundy przy użyciu jQuery 1.4.3 i 1.3 sekund z jQuery 1.4.2
problem rozwiązany dzięki dla wszystkich. Ostatnia wskazówka podana przez @VisusZhao. Jest to końcowy fragment pracy:
var KeepRows = $("#bookingstable tbody tr[id^=row_" + sClient + "_]");
$("#bookingstable tbody").empty();
$("#bookingstable tbody").append(KeepRows);
Dziękuję wszystko
Czy na pewno przyczyną jest opóźnienie? Wygląda na ~ 50 wierszy, więc nie powinno to trwać długo. –
Wątpię, że jest to kod, który powoduje, że łańcuch klienta jest wolny, ale może to być nieco bardziej przejrzysty: 'var sClient = $ (this) .attr (" id "). Split ('_') [1] ; 'dzieli ciąg znaków przez podkreślenia, następnie chwyta środkowy bit. – scunliffe
spróbuj użyć selektora: not() – bevacqua