jQuery实现高亮显示网页关键词的方法


Posted in Javascript onAugust 07, 2015

本文实例讲述了jQuery实现高亮显示网页关键词的方法。分享给大家供大家参考。具体如下:

这是一款基于jquery实现的高亮显示网页上搜索关键词的代码,当你在文本框中输入的时候,如果下面的正文中包括你输入的内容,也就是关键字,那么这些关键字是会高亮显示的,被动态添加成黄色,看上去很醒目,就像百度快照显示关键词的样子。

运行效果如下图所示:

jQuery实现高亮显示网页关键词的方法

具体代码如下:

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery文字高亮显示</title>
<style type="text/css">
.highlight {
  background-color: #fff34d;
  -moz-border-radius: 5px; /* FF1+ */
  -webkit-border-radius: 5px; /* Saf3-4 */
  border-radius: 5px; /* Opera 10.5, IE 9, Saf5, Chrome */
  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.7); /* FF3.5+ */
  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.7); /* Saf3.0+, Chrome */
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.7); /* Opera 10.5+, IE 9.0 */
}
.highlight {
  padding:1px 4px;
  margin:0 -4px;
}
</style>
</head>
<body>
Search: <input type="text" id="text-search" />
<p>This can include web design, web content development, client liaison, client-side/server-side scripting, web server and network security configuration, and e-commerce development. However, among web professionals, "web development" usually refers to the main non-design aspects of building web sites: writing markup and coding. Web development can range from developing the simplest static single page of plain text to the most complex web-based internet applications, electronic businesses, or social ntwork services.</p>
(Text from Wikipedia)
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
jQuery.fn.highlight = function(pat) {
 function innerHighlight(node, pat) {
 var skip = 0;
 if (node.nodeType == 3) {
  var pos = node.data.toUpperCase().indexOf(pat);
  if (pos >= 0) {
  var spannode = document.createElement('span');
  spannode.className = 'highlight';
  var middlebit = node.splitText(pos);
  var endbit = middlebit.splitText(pat.length);
  var middleclone = middlebit.cloneNode(true);
  spannode.appendChild(middleclone);
  middlebit.parentNode.replaceChild(spannode, middlebit);
  skip = 1;
  }
 }
 else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
  for (var i = 0; i < node.childNodes.length; ++i) {
  i += innerHighlight(node.childNodes[i], pat);
  }
 }
 return skip;
 }
 return this.each(function() {
 innerHighlight(this, pat.toUpperCase());
 });
};
jQuery.fn.removeHighlight = function() {
 function newNormalize(node) {
  for (var i = 0, children = node.childNodes, nodeCount = children.length; i < nodeCount; i++) {
    var child = children[i];
    if (child.nodeType == 1) {
      newNormalize(child);
      continue;
    }
    if (child.nodeType != 3) { continue; }
    var next = child.nextSibling;
    if (next == null || next.nodeType != 3) { continue; }
    var combined_text = child.nodeValue + next.nodeValue;
    new_node = node.ownerDocument.createTextNode(combined_text);
    node.insertBefore(new_node, child);
    node.removeChild(child);
    node.removeChild(next);
    i--;
    nodeCount--;
  }
 }
return this.find("span.highlight").each(function() {
  var thisParent = this.parentNode;
  thisParent.replaceChild(this.firstChild, this);
  newNormalize(thisParent);
 }).end();
};
</script>
<script type="text/javascript">
$(function() {
  $('#text-search').bind('keyup change', function(ev) {
    // pull in the new value
    var searchTerm = $(this).val();
    // remove any old highlighted terms
    $('body').removeHighlight();
    // disable highlighting if empty
    if ( searchTerm ) {
      // highlight the new term
      $('body').highlight( searchTerm );
    }
  });
});
</script>
</body>
</html>

希望本文所述对大家的jquery程序设计有所帮助。

Javascript 相关文章推荐
JS小框架 fly javascript framework
Nov 26 Javascript
javascript 在firebug调试时用console.log的方法
May 10 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
Jan 23 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
Jun 06 Javascript
深入分析JSON编码格式提交表单数据
Jun 25 Javascript
浅谈使用MVC模式进行JavaScript程序开发
Nov 10 Javascript
bootstrap布局中input输入框右侧图标点击功能
May 16 Javascript
Jquery $when done then的用法详解
May 20 Javascript
jquery动态创建div与input的实例代码
Oct 12 Javascript
解决VUEX刷新的时候出现数据消失
Jul 03 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
Feb 15 jQuery
vue+iview/elementUi实现城市多选
Mar 28 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
Aug 07 #Javascript
css如何让浮动元素水平居中
Aug 07 #Javascript
jQuery实现仿百度帖吧头部固定导航效果
Aug 07 #Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
Aug 07 #Javascript
jquery简单实现网页层的展开与收缩效果
Aug 07 #Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
Aug 07 #Javascript
jQuery实现仿腾讯视频列表分页效果的方法
Aug 07 #Javascript
You might like
php 结果集的分页实现代码
2009/03/10 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
JavaScript 变量作用域分析
2011/07/04 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
推荐下python/ironpython:从入门到精通
2007/10/02 Python
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
Python利用IPython提高开发效率
2016/08/10 Python
TensorFlow的权值更新方法
2018/06/14 Python
谈谈Python中的while循环语句
2019/03/10 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
竞争上岗演讲稿
2014/01/05 职场文书
2014全国两会大学生学习心得体会
2014/03/10 职场文书
语文教育专业求职信
2014/06/28 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
公司酒会致辞
2015/07/30 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL