I found 这个解决方案 https://stackoverflow.com/questions/187537/is-there-a-case-insensitive-jquery-contains-selector/783874#783874对于不区分大小写的 jQuery:contains
StackOverflow 上的选择器。它工作得很好,但它是以性能为代价的。还有其他人觉得这个解决方案有点慢吗?
我正在使用:contains
选择器来搜索表。用户在文本框中键入搜索字符串。对于每次击键,它都会在表中搜索该字符串,并通过:contains
选择器。在实施不区分大小写的解决方案之前,这种搜索是快速而敏捷的。现在有了这个解决方案,每次击键后它都会锁定一小会儿。
关于如何加快这个解决方案的速度有什么想法吗?
我在Google上找到了另一种不区分大小写搜索的解决方案(参见埃里克·潘 http://ericphan.info/development/jquery-1-3-case-insensitive-contains/)与我最初使用的略有不同。
原来的:
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;
埃里克·范:
return (a.textContent || a.innerText || "").toLowerCase().indexOf(m[3].toLowerCase())>=0;
比较两者,您可以看到 Eric Phan 的解决方案直接访问 DOM 属性并使用toLowerCase()
代替toUpperCase()
。后者并不重要,但前者真正提高了不区分大小写搜索的性能。只需更改原来的解决方案即可使用(a.textContent || a.innerText || "")
代替jQuery(a).text()
改变了一切!
现在我有点好奇,所以这是一个后续问题:这是怎么回事?jQuery.text()
?为什么这么慢?我有我的假设,但我很想听听专家的意见。
最后,感谢所有回复的人。我感谢您的帮助。 =)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)