我在 $(document).ready 上有一个循环来检查一个文本数组,该数组调用一个函数来搜索元素中的每个文本片段并将其用作选择器。
此代码在 FF、Chrome、IE9+ 等中 100% 工作。但在 IE8 中冻结了浏览器。
var setText = function(value)
{
if(typeof $('.item_name:contains("'+value+'")') != 'undefined'){
// Do something, it still freezes with nothing set here.
}
}
// In the real script there maybe upwards of 20 items in this array.
var item_list = new Array('a','b','c');
$(document).ready(function()
{
$.each(item_list, function(index, value) {
setText(value);
});
});
我已经禁用了 setText 函数并且它工作正常,所以它不是循环,它似乎是 :contains 选择器。
为什么会这样?我还能怎么做?我无法编辑 HTML 代码本身。
我的想法是我必须使用 jQuery 更改部分 HTML 标记,添加一些 HTML 并更改一些 CSS 值,但我拥有的唯一唯一标识符是“.item_name”中的文本。
冻结运行此程序的相关页面最多包含 3 个单独的“.item_name”实例。根据搜索字符串,其中任何一个都可能成为目标。
我使用的是 jQuery 1.7.1,无法更新。
if($('.item_name:contains("'+value+'")').length > 0){ // Also causes it to freeze.