如何使用jquery在搜索结果中突出显示搜索关键字
How to use jquery to highlight the search keyword in search results?
例如,在搜索结果中有以下html, aa
为关键字:
<body>
<div>
<h2><a href="#aa">aabbcc</a></h2>
</div>
<div>
<h2><a href="#bb">aaeeedd</a></h2>
</div>
<div>
<h2><a href="#cc">vvaapp</a></h2>
</div>
</body>
我想在结果中突出显示搜索关键字aa
,并且不改变其他任何东西:我试试这个:
var text = $('body').html().replace(new RegExp('aa','gim'),"<span class='highlight'>aa</span>");
$('body').html(text);
但是所有html都被替换了,包括href '#aa'。我想用each()
和text()
也许可以。有更好的解决方案吗?
$('div a').each(function() {
var text = $(this).text();
$(this).text(text.replace('aa', 'bb'));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div>
<h2><a href="#aa">aabbcc</a></h2>
</div>
<div>
<h2><a href="#bb">aaeeedd</a></h2>
</div>
<div>
<h2><a href="#cc">vvaapp</a></h2>
</div>
</body>
使用replace和.text()
$('div a').each(function() {
var text = $(this).text();
$(this).text(text.replace(/[aa]+/g, "bb"));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div>
<h2><a href="#aa">aabbcc</a></h2>
</div>
<div>
<h2><a href="#bb">aaeeedd</a></h2>
</div>
<div>
<h2><a href="#cc">vvaapp</a></h2>
</div>
</body>
使用regex $('#filter').on('keyup', function(event) {
var keyword = event.currentTarget.value;
highlight('a', keyword);
});
function highlight(selector, keyword) {
$(selector).each(function(index, element) {
var $element = $(element);
var original = $element.data('originalText');
if (original == undefined) {
original = $element.html();
$element.data('originalText', original);
}
$element.html(original.replace(keyword, '<span class="highlight">' + keyword + '</span>'));
});
}
.highlight {
background-color: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<input type="text" id="filter"/>
<div>
<h2><a href="#aa">aabbcc</a></h2>
</div>
<div>
<h2><a href="#bb">aaeeedd</a></h2>
</div>
<div>
<h2><a href="#cc">vvaapp</a></h2>
</div>
</body>
你最好使用text.textContent()它更容易记住,你仍然可以同时使用Jquery和JS
我找到了一个函数来解决它!而且效果很好!
//highlight the search keyword
function highlight($area,keyword) {
var re = new RegExp("(" + keyword + ")(?=[^<>]*<)","gi");
var html = $area.html().replace(re, '<span class="searchkeyword">$1</span>');
$area.html(html);
}
highlight($('body'), 'aa');
相关文章:
- 使用API在我的网站Google-Map上显示搜索地址的纬度和经度
- 为自定义网站创建JavaScript搜索框,创建显示搜索结果的弹出窗口
- 突出显示搜索文本引导程序表
- jqGrid不显示搜索按钮
- 根据完整的关键字突出显示搜索关键字的文本
- Javascript PHP在点击搜索时出现弹出图像,关闭图像后显示搜索结果
- 数据表:禁用第一个下一个上一个最后一个,并在处理时显示/搜索记录
- 如何在 Rails 中突出显示搜索到的单词
- 单击搜索按钮后如何显示搜索详细信息
- 使用 jquery 显示搜索中的匹配行
- 显示搜索结果
- 提示搜索不显示搜索结果
- 突出显示搜索结果在某些情况下不起作用
- 如何使用动画颜色更改突出显示搜索词
- 数据表sAjaxSource Json突出显示搜索数据
- 如何使用jquery在搜索结果中突出显示搜索关键字
- 突出显示搜索列表不工作(jquery问题)
- 显示搜索字段时,有些人开始在网页上输入
- 如何在覆盖中显示搜索结果页面
- 使用Angular显示搜索结果