Javascript заменяет проблемы (с помощью атрибутов alt и title) - PullRequest
1 голос
/ 02 июля 2010

У меня есть следующий код:

function getArticleContent() {

    var toPromote = 'example';

    var toReplace = '<a href="/tags/'+toPromote+'">'+toPromote+'</a>';

    var content = $(".a-entry").text();

    if (content.search(toPromote) > -1)
    {           
       $('.a-entry').html($('.a-entry').html().replace(new RegExp(toPromote, "g"), toReplace) );
    }
    else
    {
        //
    }
}
$(document).ready(function() {
    getArticleContent();
});

Код работает нормально, но если изображение или ссылка имеет атрибут title или alt, равный тексту, который я хочу заменить html, он не работает, потому что скрипт помещает ссылку в alt или тег title.

С наилучшими пожеланиями


Я пытаюсь сделать что-то вроде этого:

<div id="article">
 <p>Some text here, bla bla.</p>
</div>

После функции JS я хочу быть:

<div>
    <p>Some text <a href="/tags/here">here</a>, bla bla.</p>
</div>

Ответы [ 2 ]

2 голосов
/ 02 июля 2010

Вы можете сделать что-то вроде этого, хотя может быть более короткий путь (текстовые узлы для меня очень редкое явление):

function getArticleContent() {
  var toPromote = 'example';
  $(".a-entry").contents().filter(function() { return this.nodeType == 3; })
    .each(function() {
      if(this.nodeValue.indexOf(toPromote) > -1)
        $(this).replaceWith(this.nodeValue.replace(new RegExp(toPromote, "g"), 
            function(m) { return '<a href="/tags/'+m+'">'+m+'</a>'; })
        );
    });
}
$(getArticleContent);​

Вы можете попробоватьдемо здесь .Он фильтрует текстовые узлы, в частности nodeType == 3, для .each() из них он проходит по циклу и, если текст присутствует, заменяет каждое совпадение соответствующей ссылкой.

0 голосов
/ 02 июля 2010

Попробуйте использовать тег jQuery .attr () для замены тега в атрибуте href или на .text () того, что вы хотите изменить.

В противном случае это может помочьчтобы показать некоторую разметку, чтобы увидеть, что именно вы хотите (до / после примеров).

.attr('href',yournewstuff);

ИЛИ

.text(yournewstuff);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...