开源是程序员的基本美德
(function ($) { $.fn.textSearch = function (str, options) { var defaults = { divFlag: true, divStr: " ", markClass: "", markColor: "red", nullReport: true, callback: function () { return false; } }; 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 === "") { return false; } 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)) { //非标签http://www.yangshaofneg.com //开始执行替换 $.each(arr, function (index, con) { if (con === "") { return; } var reg = new RegExp($.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) { return false; } //执行回调函数 sets.callback(); }); }; })(jQuery); //调用 $("body").textSearch("By", { callback: function () { //alert("检查完毕"); } });
留下您的脚步
最近评论