Проблемы замены JavaScript (с высоким звуком и заголовком atribbutes)

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

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();
});

Код хорошо работает, но если изображение или ссылка имеет заголовок или атрибут высокого звука, равный с текстом, что я хочу заменить HTML, это повреждается, потому что put's сценария ссылка в высоком звуке или заголовок отмечает.

С уважением


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

<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>
1
задан Adam Lear 30 December 2011 в 23:51
поделиться

2 ответа

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

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 () из них, он проходит цикл и, если текст есть, заменяет каждое совпадение соответствующей ссылкой.

2
ответ дан 2 September 2019 в 23:21
поделиться

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

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

.attr('href',yournewstuff);

OR

.text(yournewstuff);
0
ответ дан 2 September 2019 в 23:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: