javascript - 对于不区分大小写的 jQuery :contains selector?,有什么方法可以加快此解决方案的速度

标签 javascript jquery jquery-selectors

我找到了 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/

相关文章:

javascript - 使用 JavaScript 使 SVG 转换后的元素适合矩形边界

javascript - Angular 显示 url 编码错误,如何获取解码版本?

javascript - 使用 ng-click 将类添加到元素

jQuery 根据内容的高度放置按钮

jQuery 选择器和反斜杠

javascript - jquery 选择不显示数据占位符消息

javascript - 递归查找 child 的 child 并删除

javascript - MVC3 jquery 后序列化数组

javascript - 自定义 JQuery 延迟处理程序

jQuery 按钮显示/隐藏具有相同 id 的多个 div