Jquery find方法挂起我的整个浏览器

时间:2013-07-17 14:25:43

标签: javascript jquery

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根本不是那么大。

2 个答案:

答案 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选择器,因为我过去遇到了同样的问题。