JJB*_*ter 5 performance jquery internet-explorer
我有一个50个奇数行,11列的表格.每一行都有一个独特的id组成部分id="row_<clientid>_rownumber".第二列中有一个复选框id="group_<clientid>_<petid>_rownumber"
编辑截图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();
Run Code Online (Sandbox Code Playgroud)
问题是需要很长时间才能在IE中得到"脚本耗时太长"的警告.
是否有更快的方法来删除许多行?
顺便说一句:使用jQuery 1.4.3需要4.4秒,使用jQuery 1.4.2需要1.3秒
问题解决了所有人.最终提示由@VisusZhao提供.这是最终的工作片段:
var KeepRows = $("#bookingstable tbody tr[id^=row_" + sClient + "_]");
$("#bookingstable tbody").empty();
$("#bookingstable tbody").append(KeepRows);
Run Code Online (Sandbox Code Playgroud)
谢谢你们
您可以首先为客户端存储该行,
var clientRow = $('#row_' + sClient);
Run Code Online (Sandbox Code Playgroud)
然后清空表
$('#table_id tbody').empty();
Run Code Online (Sandbox Code Playgroud)
然后将行插入回来
$('#table_id tbody').append(clientRow);
Run Code Online (Sandbox Code Playgroud)
这不会循环,所以它的时间是恒定的