use*_*429 3 html javascript css jquery
我已经创建了一个突出显示div中匹配单词的函数.但是如果有两个相同的单词被不同的单词分隔,那么只有第一个单词是高亮的.因此,例如,如果搜索标准是单词"burn",并且在文本中是"烧伤婴儿烧伤"这个句子,我希望它突出显示"烧伤".这个jsFiddle演示了它如何只突出第一个"刻录".这是下面的代码.任何帮助非常感谢.谢谢阅读.
CSS
.highlight{
font-weight:bold;
color:green;
}
Run Code Online (Sandbox Code Playgroud)
HTML
<input id = "search" type ="text" value = "burn">
<div class = "searchable">burn baby burn</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的
if($('#search').val().length !== 0){
$('.searchable').each(function(){
$(this).html($(this).html().replace($('#search').val(),"<span class = 'highlight'>"+$('#search').val()+"</span>"));
});
}
Run Code Online (Sandbox Code Playgroud)
您可以将正则表达式传递给replace()而不是字符串,使得要使替换的g修饰符执行全局匹配.
if($('#search').val().length !== 0){
$('.searchable').each(function(){
var search_value = $("#search").val();
var search_regexp = new RegExp(search_value, "g");
$(this).html($(this).html().replace(search_regexp,"<span class = 'highlight'>"+search_value+"</span>"));
});
}
Run Code Online (Sandbox Code Playgroud)
小智 9
照顾正则表达式的特殊字符.
保持大写和小写.
所以用不区分大小写的搜索来处理上面的事情(在大多数情况下,这是期望的;否则只需删除"i"),这里是最终的代码......
if ($('#search').val().length !== 0) {
$('.searchable').each(function() {
//Handle special characters used in regex
var searchregexp = new RegExp($("#search").val().replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "gi");
//$& will maintain uppercase and lowercase characters.
$(this).html($(this).html().replace(searchregexp, "<span class = 'highlight'>$&</span>"));
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13001 次 |
| 最近记录: |