javascript – jQuery突出显示除href值之外的单词

This answer几乎完全符合我的需求.问题是它还将匹配标签的href属性中的URL值.所以,如果我有:

<a href="/a-link-to-a-porsche-page">This is a link to a porsche page</a>

并使用此选择器:

$("a").highlight("porsche", "highlighted");

保时捷在网址和链接文字中都匹配.可以做什么,以便省略href属性的值?

以前参考的后代答案:

jQuery.fn.highlight = function (str, className) {
    var regex = new RegExp(str, "gi");

    return this.each(function () {
        this.innerHTML = this.innerHTML.replace(regex, function(matched) {return "<span class=\"" + className + "\">" + matched + "</span>";});
    });
};

不知道jsfiddle.这是一个基于justkt响应的更完整的例子:http://jsfiddle.net/Dzejms/L5Knh/1/

一种选择是向下钻取每个对象的子节点,以确保您没有抓住innerHTML中的DOM节点.

这是一个相当低效的示例,它在每个匹配对象的子节点上使用递归:

jQuery.fn.highlight = function (str, className) {
    var regex = new RegExp(str, "gi");

    return this.each(function () {
        checkHighlight(this);
    });

    function checkHighlight(obj) {
        var children = $(obj).children();
        if(children.length == 0) {
            doHighlight(obj);
        } else {
            children.each(function() {
                checkHighlight(this);
            });
        }
    }

    function doHighlight(obj) {
        obj.innerHTML = obj.innerHTML.replace(regex, function(matched) {return "<span class=\"" + className + "\">" + matched + "</span>";});
    }
};

在行动here中看到它.

相关文章
相关标签/搜索