如何通过js使搜索关键词高亮
给你推荐通过jquery来实现高亮关键词。jquery.textSearch-1.0.js代码:
- (function($){
- $.fn.textSearch =function(str,options){
- var defaults ={
- divFlag:true,
- divStr:" ",
- markClass:"",
- markColor:"red",
- nullReport:true,
- callback:function(){
- returnfalse;
- }
- };
- var sets = $.extend({}, defaults, options ||{}), clStr;
- if(sets.markClass){
- clStr ="class='"+sets.markClass+"'";
- }else{
- clStr ="style='color:"+sets.markColor+";'";
- }
- //对前一次高亮处理的文字还原
- $("span[rel='mark']").removeAttr("class").removeAttr("style").removeAttr("rel");
- //字符串正则表达式关键字转化
- $.regTrim =function(s){
- var imp =/[\^\.\\\|\(\)\*\+\-\$\[\]\?]/g;
- var imp_c ={};
- imp_c["^"]="\\^";
- imp_c["."]="\\.";
- imp_c["\\"]="\\\\";
- imp_c["|"]="\\|";
- imp_c["("]="\\(";
- imp_c[")"]="\\)";
- imp_c["*"]="\\*";
- imp_c["+"]="\\+";
- imp_c["-"]="\\-";
- imp_c["$"]="\$";
- imp_c["["]="\\[";
- imp_c["]"]="\\]";
- imp_c["?"]="\\?";
- s = s.replace(imp,function(o){
- return imp_c[o];
- });
- return s;
- };
- $(this).each(function(){
- var t = $(this);
- str = $.trim(str);
- if(str ===""){
- alert("关键字为空");
- returnfalse;
- }else{
- //将关键字push到数组之中
- var arr =[];
- if(sets.divFlag){
- arr = str.split(sets.divStr);
- }else{
- arr.push(str);
- }
- }
- var v_html = t.html();
- //删除注释
- v_html = v_html.replace(/<!--(?:.*)\-->/g,"");
- //将HTML代码支离为HTML片段和文字片段,其中文字片段用于正则替换处理,而HTML片段置之不理
- var tags =/[^<>]+|<(\/?)([A-Za-z]+)([^<>]*)>/g;
- var a = v_html.match(tags), test =0;
- $.each(a,function(i, c){
- if(!/<(?:.|\s)*?>/.test(c)){//非标签
- //开始执行替换
- $.each(arr,function(index, con){
- if(con ===""){return;}
- var reg =newRegExp($.regTrim(con),"g");
- if(reg.test(c)){
- //正则替换
- c = c.replace(reg,"♂"+con+"♀");
- test =1;
- }
- });
- c = c.replace(/♂/g,"<span rel='mark' "+clStr+">").replace(/♀/g,"</span>");
- a[i]= c;
- }
- });
- //将支离数组重新组成字符串
- var new_html = a.join("");
- $(this).html(new_html);
- if(test ===0&& sets.nullReport){
- alert("没有搜索结果");
- returnfalse;
- }
- //执行回调函数
- sets.callback();
- });
- };
- })(jQuery);
使用方法是textSearch,具体为:$(选择器). textSearch(String,可选参数)。例如,
- $("body").textSearch("世界杯");
表示的含义就是查询并红色高亮标注body标签下的所有的“世界杯”这个关键字,也就是页面下高亮标注所有的“世界杯”文字。又如:
- $(".test").textSearch("空姐 凤姐 芙蓉姐",{markColor:"blue"});
则表示class中有test样式的所有标签下的“空姐”,“凤姐”,“芙蓉姐”文字用蓝色高亮标注。
我使用的过程为:(需要同时引入下面两个js文件才能正常运行)
<script type="text/javascript" src="jquery-2.0.0.js"></script>
<script type="text/javascript" src="jquery.textSearch-1.0.js"></script>
<script type="text/javascript">
$(function(){
var v = $("#txtSearchKeyword").val(); //获取id为txtSearchKeyword的text值赋给v 也可以使用request传递的参数:var v = "<%=q1%>";
$("#searchTextTest").textSearch(v); //将id为searchTextTest的文本中包含v的高亮显示
return false;
});
</script>
详细用法请参考:http://www.zhangxinxu.com/wordpress/?p=888
如何通过js使搜索关键词高亮的更多相关文章
- 微信小程序--搜索关键词高亮
代码地址如下:http://www.demodashi.com/demo/14249.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 微信小程序实现搜索关键词高亮
目录 1,前言 2,思路 3,代码逻辑 1,前言 项目中碰到一个需求,搜索数据并且关键词要高亮显示,接到需求,马上开干.先上效果图.源码已经做成了小程序代码片段,放入了GitHub了,文章底部有源码链 ...
- 和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮
前面几篇文章详细讲解了 ElasticSearch 的搭建以及使用 SpringDataElasticSearch 来完成搜索查询,但是搜索一般都会有搜索关键字高亮的功能,今天我们把它给加上. 系列文 ...
- js 获取百度搜索关键词的代码
有可能有时候我们会用到在百度搜什么关键词进来我们的网站的,所有我们又想拿到用户搜索的关键词. 这是我研究了半天所得出的办法.话不多说直接贴代码 <script> function quer ...
- 从零搭建 ES 搜索服务(五)搜索结果高亮
一.前言 在实际使用中搜索结果中的关键词前端通常会以特殊形式展示,比如标记为红色使人一目了然.我们可以通过 ES 提供的高亮功能实现此效果. 二.代码实现 前文查询是通过一个继承 Elasticsea ...
- 在 Angular 中实现搜索关键字高亮
在 Angular 中,我们不应该试图直接修改 DOM 的内容,当需要更新 DOM 内容的时候,应该修改的其实是我们的数据模型,也就是 $scope 中的数据,Angular 会帮助我们将修改之后的数 ...
- Django Haystack 全文检索与关键词高亮
Django Haystack 简介 django-haystack 是一个专门提供搜索功能的 django 第三方应用,它支持 Solr.Elasticsearch.Whoosh.Xapian 等多 ...
- jQuery的搜索关键词自动匹配插件
相信许多人都会用过搜索栏自动匹配关键词的功能,无论是像google的专业搜索引擎,还是普通的网站,现在许多都用上了这种关键词匹配技术,本文介绍的用jQuery实现的关键词匹配技术,当然要整合到自己的系 ...
- jQuery实现页面关键词高亮
示例代码,关键位置做了注释,请查看代码: <html> <head> <title>jQuery实现页面关键词高亮</title> <style ...
随机推荐
- qt中如果用qDebug输出彩色调试信息
Linux: 在终端输出彩色信息有点类似于html的语法,即在要输出的文字前加上转义字符. 指令格式如下\033[*m 这里的*就是转义字符,例如我们要输出一段绿色的文字 qDebug(" ...
- SQL语句中"where 1=1"和"where 1=0"的作用
where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where 1=1 在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项有 ...
- 关于AVD不能导入文件的解决方案
安卓虚拟机导入文件时报以下异常: [2013-01-23 16:09:18 - ddms] transfer error: Read-only file system [2013-01-23 16:0 ...
- Java基础--Java内存管理与垃圾回收
Java自动内存管理 在讲解内存管理之前,首先需要了解对象和对象引用的区别 对象是类的一个实例,以人这个类为例,Person是我们定义的一个类 public class Person{} publ ...
- Binary Tree Level Order Traversal 解题思路 ×
要求: 树的层级遍历 思路: 1.两个队列,q1 q2 ,root放到q1 2.q1首元素出列,判断是否有左右孩子,有的话,放入q2.(循环此步骤值得q1为空) 3.q1 = q2,重复2,直到q1为 ...
- 异步调用backgroudworker
先看一个小例子:C#客户端打开一个控件,控件中加载了好多数据大约要用5秒中,如果我们直接打开控件,那么这个控件就要5秒中才能弹出来,当然这个时候用户已经把他Kill了.这个时候我们就需要先给用户把控件 ...
- AS3.0定义变量的访问范围
在AS3.0中变量的默认访问范围是:internal:包内成员可以访问,包外不可访问.AS2.0默认访问范围是public
- centos7 更改语言
vim /etc/locale.conf 修改 LANG="en_US.UTF-8"
- [Linux]命令行模式切换
图形界面进入命令:Ctrl+Alt+T 进入终端命令:Ctrl+Alt+F1 or Ctrl+Alt+F2 切换至图形界面:按Alt+F7
- iOS: 学习笔记, Swift与Objective-C混用简明教程(转载)
Swift与Objective-C混用简明教程 转载自:https://github.com/lifedim/SwiftCasts/tree/master/000_mix_swift_objc 我想很 ...