在 html 文档中突出显示不同字符串的最快方法是什么
Whats the fastest way to highlight different strings in an html document?
我正在尝试在 html 页面中搜索字符串,我有一个包含 1000 个名称的对象,我需要查找这些名称是否存在于 html 文档中。如果它们确实存在,那么我需要将它们包装在一个跨度或其他东西中并应用一个类。
我一直在使用这个jQuery突出显示插件,但是扫描和突出显示整个页面大约需要17秒,这显然取决于页面上有多少个不同的名称。
我已经尝试了几个不同的插件,但没有找到更快的插件,有没有办法在更快的香草 JS 中做到这一点?它只需要在Chrome中工作。
任何帮助将不胜感激。
谢谢
编辑:包含名称的对象的结构:
var PEOPLE = {
"fred" : {
loaded : false,
elements : []
},
"dave" : {
loaded : false,
elements : []
},
"bob" : {
loaded : false,
elements : []
}
}
Plain javascript。
基本上,我遍历您的对象并提取所有相关名称。有了这个,我将数组传递给 highlightString 函数,在那里我连接要与管道字符匹配的所有字符串,并创建一个全局运行并忽略大小写的正则表达式。这会导致搜索的div 只搜索一次。这应该会导致相当大的加速。
var PEOPLE = {
"fred" : {
loaded : false,
elements : []
},
"dave" : {
loaded : false,
elements : []
},
"bob" : {
loaded : false,
elements : []
}
},
name,
search = [];
for (name in PEOPLE) {
search.push(name);
}
function highlightStrings(input, toMatch) {
var reg = new RegExp('(' + toMatch.join('|') + ')', "gi");
input.innerHTML = input.innerHTML.replace(reg, '<span class="myHighLight">$1</span>');
}
highlightStrings(document.getElementById("test"), search);
.myHighLight {background-color:yellow;}
<div id="test">
test1 test2 fred test4 test5 test6 test7 test8 dave test10 test11 test12 bob test14 test15
</div>
试试这个。
jQuery.expr[':'].contains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
}; // this is just for ignore case
$("#id_of_Input_Tag").keyup(function() {
$(".UserItem a").hide(); // hide all content
var rows = $(".UserItem").find("a");
var data = this.value.split("~");
$.each( data, function(i, v) {
rows.filter(":contains('" + v + "')").show(); // this will only show the maching content.
if(v == '' ){
$(".UserItem a").show(); // when input is empty then show all
}
});
});
相关文章:
- 在JavaScript中拆分日期字符串的更好方法是什么
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- “转义字符串”在Regex中是什么意思?(Javascript)
- 将自然数转换为三位字符串的简单算法是什么
- 获取字符串中最后一个换行符的最有效方法是什么
- 使用JS找出字符串中字符重复的最简单方法是什么
- 用字符串和数字写视频源URL的正确方式是什么
- 通过字符串最有效的方法是什么;s字符
- 在 Javascript 中将对象连接为空格分隔字符串的最简单方法是什么?
- 它继承的字符串原型是什么
- 在 JavaScript 中,将文本插入字符串的最简单方法是什么?
- 将字符串解析为一系列转义十六进制字符的方法是什么
- 从字符串中获取 html 标记的最可维护方法是什么
- 空字符串到底是什么?( "" ).
- 正确的选择器字符串是什么,可以在像这样结构的 HTML 中获取我想要的特定元素
- 匹配正确字符串的确切正则表达式是什么
- ${}(美元符号和大括号)在 JavaScript 中的字符串中是什么意思
- 从 JMeter 的正则表达式提取器中的字符串“什么是 (123+43)”中提取 123+43 的正则表达式是什么?
- iOS不同浏览器的具体用户代理字符串是什么
- 简单的JavaScript空字符串检查,(空字符串)是什么意思,为什么失败