我找到了 this solution对于 StackOverflow 上不区分大小写的 jQuery :contains
选择器。它工作得很好,但它是以性能为代价的。还有其他人觉得这个解决方案有点慢吗?
我正在使用 :contains
选择器来搜索表格。用户在文本框中键入搜索字符串。对于每次击键,它都会在表中搜索该字符串,并通过 :contains
选择器仅显示包含该字符串的行。在实现不区分大小写的解决方案之前,此搜索快速而活泼。现在有了这个解决方案,它会在每次击键后短暂锁定。
关于如何加快此解决方案的任何想法?
最佳答案
我在 Google 上找到了另一种不区分大小写搜索的解决方案(参见 Eric Phan),它与我最初使用的略有不同。
原文:
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()
有什么用?为什么这么慢?我有我的假设,但我很想听听专家们怎么说。
最后,感谢所有回复的人。我很感激你的帮助。 =)
关于javascript - 对于不区分大小写的 jQuery :contains selector?,有什么方法可以加快此解决方案的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1407434/