Jquery find()使我的整个浏览器停止工作。
我的浏览器停止工作的行是这一行:
item.find('div:contains(\'' + myText + '\')').remove();
具体来说,是remove()之前的部分,也就是find()部分。
以下是变量的值:
myText: "Grand sauce ()"
item: e.fn.e.init[1]
0: a.ui-corner-all ui-state-hover
item[0].innerText: "Grand sauce...302774"
item[0].innerHTML: "<table style=" width: 100%; font-size:10px;" name="Grand sauce ()"><tbody><tr><td id="column1" style="width:170px; padding:2px 2px 2px 8px;position: relative;">Grand sauce...302774</td><td style="width:50px; padding:2px;">302774</td><td style="width:70px; padding:2px;">Supp</td><td style="width:70px; padding:2px;"></td><td style="width:50px; padding:2px;">2.00</td><td style="width:80px; padding:2px;">93ml</td><td style="width:90px; padding:2px;"> € 1.35</td></tr></tbody></table>"
为什么浏览器会挂起? innerHTML根本不是那么大。
答案 0 :(得分:2)
我认为问题是myText中的您可以正确转义它或使用过滤器:(
和)
。
item.find('div').filter(function(){
return $(this).text().indexOf(myText) > -1;
}).remove();
尝试也可以这样尝试:
$('div:contains("' + myText + '")').remove();
以下是演示:http://jsbin.com/ehuqux/2/edit
实际上,Errr也是你发布作品的方式。我认为代码还有其他的东西。
答案 1 :(得分:1)
请改为尝试:
item.find('div').filter(function() {
return ($(this).text().indexOf(myText) != -1);
}).remove();
我不确定你为什么会看到这个问题,但我通常会尽量避免像:contains()
那样模糊不清的jQuery选择器,因为我过去遇到了同样的问题。