使用JS实现博客搜索关键字高亮
说明
最近博客添加了搜索功能,有个需求是要针对搜索结果中搜索关键字需要高亮显示。
以便用户可以更快速的挑选自己中意的文章。
原理就是在渲染列表数据中给含有关键字的文本标签添加自定义class,渲染完毕后调用写好的高亮js方法。
实现效果

代码
// 搜索关键字高亮
var highlightKeyword=function(keyword) {
//1.获取要高亮显示的行
var rowNode = $('.highlightRow');
//2.获取搜索的内容
//3.遍历整行内容,添加高亮颜色
rowNode.each(function() {
var newHtml = $(this).html();
newHtml = newHtml.replace(keyword, '<span style="color:#ff6700;">' + keyword + '</span>');
$(this).html(newHtml);
});
}
// 拼接列表
var dataRow = "";
if (data.rows != null && data.rows != '') {
$.each(data.rows, function(i, r) {
// 拼接DOM
dataRow+='<div class="search-post-item">'+
'<h4 class="">'+
'<a href="'+ctx+'/author/'+postAuthor+'/post/detail/'+r.id+'" target="_blank">'+
'<span class="post-title highlightRow">'+r.postTitle+'</span>'+
'</a>'+
'</h4>'+
'<p class="post-content highlightRow">'+r.postExcerpt+
'</p>'+
'<div class="post-info-box">'+
'<p>' +
'<span class="date">'+new Date(r.postTime).Format("yyyy-MM-dd hh:mm:ss")+'</span>'+
'</p>'+
'<p class="point"></p>'+
'<p>'+
'<span class="read-num">阅读数 <span class="num">'+r.readCount+'</span> </span>'+
'</p>'+
'<p class="point"></p>'+
'<p>'+
'<span class="comment-num">评论数 <span class="num">'+r.commentCount+'</span> </span>'+
'</p>'+
'</div>'
'</div>';
dataRow+='</div>';
});
// console.log(dataRow);
$("#post-list").append(dataRow);
// 高亮关键字
highlightKeyword(postTitle);
使用JS实现博客搜索关键字高亮的更多相关文章
- Lucene5.5.4入门以及基于Lucene实现博客搜索功能
前言 一直以来个人博客的搜索功能很蹩脚,只是自己简单用数据库的like %keyword%来实现的,所以导致经常搜不到想要找的内容,而且高亮显示.摘要截取等也不好实现,所以决定采用Lucene改写博客 ...
- 在 Angular 中实现搜索关键字高亮
在 Angular 中,我们不应该试图直接修改 DOM 的内容,当需要更新 DOM 内容的时候,应该修改的其实是我们的数据模型,也就是 $scope 中的数据,Angular 会帮助我们将修改之后的数 ...
- trait Monad:函数式编程类型系统本博客搜索关键字--类型升降
trait Monad:函数式编程类型系统本博客搜索关键字--类型升降
- 为Ghost博客扩展代码高亮、数学公式、页面统计、评论
前几天捣鼓了一下博客首页,接下来再丰富一下博客页面的功能与内容.由于我所使用的Ghost博客专注于轻量简洁,因此标题中提到的功能在Ghost中默认均不支持.下面将逐个介绍一下如何为Ghost扩展这些功 ...
- 一个基于Vue.js+Mongodb+Node.js的博客内容管理系统
这个项目最初其实是fork别人的项目.当初想接触下mongodb数据库,找个例子学习下,后来改着改着就面目全非了.后台和数据库重构,前端增加了登录注册功能,仅保留了博客设置页面,但是也优化了. 一.功 ...
- Node.js开发博客系统
数据库设计 用户表: id phone password nickname head_img personal_sign level_id create_time update_time is_del ...
- require.js 使用博客
没时间写博客,又觉得这篇很不错,或许以后能用到,只能copy与点赞: Javascript模块化编程(三):require.js的用法 作者: 阮一峰 日期: 2012年11月 7日 这个系列的第 ...
- hexo —— 简单、快速、强大的Node.js静态博客框架
hexo是一款基于Node.js的静态博客框架.目前在GitHub上已有1375 star 和 219 fork. 特性 风一般的速度 Hexo基于Node.js,支持多进程,几百篇文章也可以秒生成. ...
- 新浪博客如何显示高亮代码,DIY
新浪博客对代码的支持功能不尽完美,或者说一点都不好,可是对于一个追求完美的技术痴而言,代码不能够完美的显示,心里总有那么一些不爽,那么如何在新浪中显示那些带颜色的代码呢?经过探究,可以如下设置: ...
- 20141127 测试使用Word2013书写博客(代码高亮+公式支持)。
PS :又经过几次测试,发现用于Word2010的高亮插件在Word2013上排版效果不是很好,慎用.不过公式编辑倒是挺方便的 测试使用Word2013书写博客. 大概一个月前,使用WindowL ...
随机推荐
- [转帖]Kubernetes1.25.6部署文档 使用cri-docker部署K8s1.25.6
https://zhuanlan.zhihu.com/p/600808149 本文档将通过kubeadm+docker部署K8s集群,本次集群使用的容器运行工具为docker,K8s的容器运行工具也可 ...
- 【转帖】关于网卡特性TSO、UFO、GSO、LRO、GRO
https://www.cnblogs.com/larrypeng/p/12496810.html 我们来看下关于网卡特性的解释,不过记住GSO和GRO两个特性就好. TSO(TCP Segmenta ...
- buildkit的简单学习与使用
下载 需要注意本文学习了很多如下网站的内容: https://zhuanlan.zhihu.com/p/366671300 # 第一步下载资源 https://github.com/moby/buil ...
- nginx 企业版与开源版本的区别
- 【VictoriaMetrics】一个小优化:循环改查表,性能提升56.48 倍
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 做了一个 vm-storage 数据文件 merge 的工 ...
- 在Protocol Buffers中导入当前目录中的.proto文件
在protobuf中导入当前目录中的.proto文件时,可以使用相对路径.相对路径是相对于当前.proto文件所在的目录来引用其他.proto文件. 假设有以下目录结构: my_project/ |- ...
- TienChin 渠道管理-删除渠道
更改一下菜单权限,将删除渠道的 delete 改为 remove: ChannelController.java @PreAuthorize("hasPermission('tienchin ...
- TienChin 渠道管理-渠道类型
在上一篇文章当中,表里面有一个渠道类型,我们这节主要是将这个渠道类型创建好,首先我们来看看字典表. sys_dict_type 表: 字段名 数据类型 注释 dict_id bigint 字典主键 d ...
- MySQL使用遇到问题总结
1.mysql安装好后在控制台输入命令后无反应 这是就要注意: show databases; 第一:databases是要加"s"结尾 第二:如果加了s仍无反应,看是否加了&qu ...
- Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏、实物、人物、风景、动漫、邮票、海报等生成,终极模板教学
Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏.实物.人物.风景.动漫.邮票.海报等生成,终极模板教学 场景6:游戏 Prompt 真的越长越好吗? 按照 Mi ...