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 OOP包机制,类创建的方法定义
Nov 02 Javascript
jquery实现平滑的二级下拉菜单效果
Aug 26 Javascript
详细谈谈javascript的对象
Jul 31 Javascript
AngularJs 指令详解及示例代码
Sep 01 Javascript
Javascript 实现全屏滚动实例代码
Dec 31 Javascript
微信小程序 setData使用方法及常用错误解决办法
May 11 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
Jun 25 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
Feb 03 Javascript
微信小程序实现笑脸评分功能
Nov 03 Javascript
Django+Vue实现WebSocket连接的示例代码
May 28 Javascript
你准备好迎接vue3.0了吗
Apr 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
Banner程序
2006/10/09 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
js获取元素在浏览器中的绝对位置
2010/07/24 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
移动端界面的适配
2017/01/11 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
python中的多线程实例教程
2014/08/27 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
Python 中的lambda函数介绍
2018/10/10 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
秘书岗位职责
2013/11/18 职场文书
高职教师岗位职责
2013/12/24 职场文书
群众路线剖析材料
2014/02/02 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
班委竞选演讲稿
2014/04/28 职场文书
机械机修工岗位职责
2014/08/03 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
2016年十一促销广告语
2016/01/28 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
MySQL存储过程及语法详解
2022/08/05 MySQL