我有一個包含11列的50奇數行的表。每行有一個獨特的id
,由id="row_<clientid>_rownumber"
組成。有一個在第二列中的複選框與id="group_<clientid>_<petid>_rownumber"
是否有一種快速的方式來刪除與jQuery的錶行
Redacted Screenshot http://www.forsythesit.com.au/res/img/slowrowremoval.jpg
當用戶點擊一個複選框,我想刪除狀態之外的任何屬於選定客戶端的所有行。我有一些代碼的工作原理如下:
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();
問題是,它需要很長時間,在IE中,我得到了「腳本的時間過長」的警告。
是否有更快的方法來刪除多行?
順便說一句:它需要使用jQuery 1.4.3和1.3秒4.4秒與jQuery 1.4.2
問題就解決了由於所有。 @VisusZhao提供的最終提示。這是最後的工作片段:
var KeepRows = $("#bookingstable tbody tr[id^=row_" + sClient + "_]");
$("#bookingstable tbody").empty();
$("#bookingstable tbody").append(KeepRows);
謝謝大家
你確定這是什麼原因導致延遲?似乎約50行,這不應該花很長時間。 – 2010-10-21 01:21:19
我懷疑這是獲取客戶端字符串的代碼很慢,但這可能會更清潔一點:'var sClient = $(this).attr(「id」)。split('_')[1] ;'用下劃線分割字符串然後抓住中間位。 – scunliffe 2010-10-21 01:22:29
嘗試使用:not()selector – bevacqua 2010-10-21 01:23:54