Jquery 如何使用正则表达式和锚定标记突出显示另一个元素中的单词
我希望能够点击锚标签,并让它突出显示其下方div中的相应单词。似乎我看到的每个例子都需要输入,但我希望能够使用按钮或锚定标记来完成。这是我的小提琴,还没用。有什么我遗漏的吗Jquery 如何使用正则表达式和锚定标记突出显示另一个元素中的单词,jquery,regex,string,replace,Jquery,Regex,String,Replace,我希望能够点击锚标签,并让它突出显示其下方div中的相应单词。似乎我看到的每个例子都需要输入,但我希望能够使用按钮或锚定标记来完成。这是我的小提琴,还没用。有什么我遗漏的吗 $(“#搜索”)。单击(函数(){ var test=newregexp( $(“\\”搜索“).text().replace(/[-\/\^$*+?。()”[124;[\]{}]/g,“\\$&”), ‘gi’; $('#sample').children().addBack().not('.highlight').co
$(“#搜索”)。单击(函数(){
var test=newregexp(
$(“\\”搜索“).text().replace(/[-\/\^$*+?。()”[124;[\]{}]/g,“\\$&”),
‘gi’;
$('#sample').children().addBack().not('.highlight').contents().filter(函数()){
返回this.nodeType==3;
}).replaceWith(函数(){
返回此.str.replace(测试,$&');
});
});
$(“#还原”)。单击(函数(){
$(“.highlight”).contents().unwrap();
});
老实说,我不能很好地理解你的代码。但我已经为你需要的东西编写了代码,即:
单击
#搜索
时,我们检索其文本()
,并将#示例
替换为搜索
的文本单击
#还原
时,我们仅将#示例
html()
替换为#示例
文本()
$(“#搜索”)。单击(函数(){
var re=new RegExp(“\\b”+$(“#搜索”).text()+“\\b”,“ig”);
$(“#示例”).html($(“#示例”).text().replace(re,,$&'))
});
$(“#还原”)。单击(函数(){
$(“#示例”).html($(“#示例”).text());
});代码>
。突出显示{
背景颜色:黄色;
}
还原
突出显示Yoda Yodada这个词
老实说,我不能很好地理解你的代码。但我已经为你需要的东西编写了代码,即:
单击#搜索
时,我们检索其文本()
,并将#示例
替换为搜索
的文本
单击#还原
时,我们仅将#示例
html()
替换为#示例
文本()
$(“#搜索”)。单击(函数(){
var re=new RegExp(“\\b”+$(“#搜索”).text()+“\\b”,“ig”);
$(“#示例”).html($(“#示例”).text().replace(re,,$&'))
});
$(“#还原”)。单击(函数(){
$(“#示例”).html($(“#示例”).text());
});代码>
。突出显示{
背景颜色:黄色;
}
还原
突出显示Yoda Yodada这个词
这是我能够使用的代码。它与您尝试的不完全相同,特别是在查找要替换的文本方面
$('#search').click(function () {
var newtext = $('#search').text().replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
var test = new RegExp(newtext, 'gi');
$('#sample').html($('#sample').text().replace(test, '<span class="highlight">$&</span>'));
});
$(“#搜索”)。单击(函数(){
var newtext=$('search').text();
var测试=新的RegExp(newtext,'gi');
$('#sample').html($('#sample').text().replace(test,'$&'));
});
这将突出显示选定的单词。带过滤器的代码对我来说没有意义,因为您试图实现什么,所以我简化了代码以使突出显示正常工作。这是我能够使用的代码。它与您尝试的不完全相同,特别是在查找要替换的文本方面
$('#search').click(function () {
var newtext = $('#search').text().replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
var test = new RegExp(newtext, 'gi');
$('#sample').html($('#sample').text().replace(test, '<span class="highlight">$&</span>'));
});
$(“#搜索”)。单击(函数(){
var newtext=$('search').text();
var测试=新的RegExp(newtext,'gi');
$('#sample').html($('#sample').text().replace(test,'$&'));
});
这将突出显示选定的单词。带有过滤器的代码对我来说没有意义,因此我简化了代码以使突出显示有效。您的代码和已回复的答案没有错误,但可能会产生负面影响。将.html()
与jQuery一起使用,或将innerHTML
与VanillaJS一起使用,将销毁元素上的所有事件,并一次又一次地触发DOM的生成。所以,请停止这样做,否则你会遇到更多的陷阱使用为此构建的现有组件
看一看,它是关键字/搜索词或自定义正则表达式的高亮显示。它也可以作为jQuery插件提供。
下面的示例演示了如何在上下文中动态突出显示输入中输入的文本(请参见下面的演示)
var-markInstance=新标记(document.querySelector(“.context”);
函数高亮显示(){
var searchTerm=document.querySelector(“输入”).value;
markInstance.unmark().mark(searchTerm);
}
标记{
背景:黄色;
}
他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的。他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的。
您的代码和已回复的答案没有错误,但可能会产生负面影响。将.html()
与jQuery一起使用,或将innerHTML
与VanillaJS一起使用,将销毁元素上的所有事件,并一次又一次地触发DOM的生成。所以,请停止这样做,否则你会遇到更多的陷阱使用为此构建的现有组件
看一看,它是关键字/搜索词或自定义正则表达式的高亮显示。它也可以作为jQuery插件提供。
下面的示例演示了如何在上下文中动态突出显示输入中输入的文本(请参见下面的演示)
var markInstan