JQuery *(所有元素)选择器,不包括具有某些类的span标记。我怎么能做这个工作?

时间:2013-05-22 03:08:46

标签: jquery regex jquery-selectors dom-events

这是第一个代码

var operations = 0;
$('body').bind('DOMCharacterDataModified, DOMNodeInserted, DOMSubtreeModified', 'test', function() {
    if (operations < 1) {
        tba_highlight_numbers();
    }
    operations++;
});

并且,这是“tba_highlight_numbers”功能的最新代码。

function tba_highlight_numbers() {

//Highlighting the number on webpage.
$("body *:not(span.tba_phone)").replaceText(/\d*[/\(-]*[0-9][0-9][0-9][/ \)\(-]*[0-9][0-9][0-9][/ \)\(-]*[0-9][0-9][0-9][0-9][/ \) ]*/g, function(ss) {
    return '<span class="tba_phone" title="Make a Call to (' + $.trim(ss) + ') via ACT Browser Applet" style="color:green" rel="' + $.trim(ss) + '">' + ss + '</span>';
});

}

此js代码执行突出显示网页上的电话号码的操作。但是正如你在第一部分中看到的那样,通过ajax请求和其他方法动态地在网页上动态修改此函数。

因此,我的目标是不对之前突出显示的操作执行操作。

有人可以帮助我实现这一目标。

1 个答案:

答案 0 :(得分:1)

将功能更改为

function tba_highlight_numbers() {

    //Highlighting the number on webpage.
    $("body *:not(span.tba_phone)").filter(function(){ return $(this).hasClass(".already-hightlighted");}).replaceText(/\d*[/\(-]*[0-9][0-9][0-9][/ \)\(-]*[0-9][0-9][0-9][/ \)\(-]*[0-9][0-9][0-9][0-9][/ \) ]*/g, function(ss) {
        return '<span class="tba_phone" title="Make a Call to (' + $.trim(ss) + ') via ACT Browser Applet" style="color:green" rel="' + $.trim(ss) + '">' + ss + '</span>' + ss;
    });
    $("body *:not(span.tba_phone)").addClass('already-highlighted');


}