Как заменить слово / слова на URL / URL с помощью jQuery? - PullRequest
0 голосов
/ 29 сентября 2011

Я хочу заменить определенные слова (ноутбук, asus, acer) ссылками (test.com/l12, test.com/13, test.com/14) с помощью jQuery. Я нашел эту функцию

<script type="text/javascript">
(function($) {
          var thePage = $("body");
          thePage.text(thePage.html().replace(/laptop/ig, '<a href="http://test.com/laptop">laptop</a>')); 
})(jQuery)
</script>

но проблема в том, что он заменяет слово ноутбука в существующих URL-адресах (создавая URL-адреса, такие как test.com/test.com/laptop-review, если URL-адрес был test.com/laptop-review), и весь html-код ноутбука (html-идентификаторы) , классы, URL и т. д.) на странице уничтожено.

Спасибо

Ответы [ 2 ]

3 голосов
/ 29 сентября 2011

Вы можете сделать:

$('body *').each(function(){
     var txt = $(this).text();

    txt =  txt.replace('laptop', '<a href="http://test.com/laptop">laptop</a>');


    $(this).html(txt);
});

скрипка http://jsfiddle.net/LXw6P/

РЕДАКТИРОВАТЬ, конечно, вы можете сделать это функцией и использовать ее снова:

var updateTxt = function(stringToReplace){
    var replaceText = '<a href="http://test.com/'+stringToReplace'+">'+stringToReplace+'</a>';
    $('body *').each(function(){
       var txt = $(this).text();

        txt =  txt.replace(stringToReplace, replaceText);


        $(this).html(txt);
    });
}

используйте это:

updateTxt('laptop');
1 голос
/ 29 сентября 2011

Вы можете попробовать использовать плагин замены текста jQuery - http://net.tutsplus.com/tutorials/javascript-ajax/spotlight-jquery-replacetext/

Плагин должен игнорировать HTML-разметку и изменять только текстовые значения.

Дополнительные сведения приведены в этом вопросе - Как выполнить поиск слова без учета регистра и преобразовать его в гиперссылку с помощью jquery?

...