0

Jquery find() により、ブラウザ全体が機能しなくなります。

ブラウザが動作を停止する行は次のとおりです。

item.find('div:contains(\'' + myText + '\')').remove();

具体的には、find() の部分である remove() の前の部分です。

変数の値は次のとおりです。

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 はそれほど大きくありません。

4

2 に答える 2

2

問題はmyTextの(andだと思います。)適切にエスケープするか、フィルターを使用できます。

item.find('div').filter(function(){
  return $(this).text().indexOf(myText) > -1;
}).remove();

次の方法で試すこともできます。

$('div:contains("' + myText + '")').remove();

ここにデモがあります:http://jsbin.com/ehuqux/2/edit

エラー、実際には、あなたが投稿した方法も同様に機能します。私が思うに、コードには何か他のものがあります。

于 2013-07-17T14:31:10.837 に答える
1

代わりにこれを試してください:

item.find('div').filter(function() {
    return ($(this).text().indexOf(myText) != -1);
}).remove();

この問題が発生する理由はわかり:contains()ませんが、過去に同じ問題が発生したことがあるため、通常はよりあいまいな jQuery セレクターを避けるようにしています。

于 2013-07-17T14:29:24.810 に答える