2

これが最初のコードです

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 コードは、Web ページで電話番号を強調表示する操作を実行します。しかし、最初の部分でわかるように、この関数は、Web ページ上のデータが ajax リクエストやその他のメソッドによって動的に変更されるたびに呼び出されます。

したがって、私の目的は、以前に強調表示されたものに対して操作を実行しないことです。

誰かがこれを達成するのを手伝ってくれますか?

4

1 に答える 1

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');


}
于 2013-05-22T03:20:17.343 に答える