2012-07-04 3 views
2

Я хочу заменить каждое «Новое» внутри каждой ссылки тегом span.JQuery заменить для каждого

Правильно ли это?

$("a:contains('New')").each(function() { 
       $(this).html($(this).html().replace("New", "<span class='new'>New</span>")); 
     }); 
+3

вы пробовали код? :) –

+0

Это работает или нет? – Bergi

+0

Вы видели мой ответ? : / –

ответ

1

Адрес: са довольно простой метод, а также:

$("a:contains('New')").each(function() { 
    $(this).html(function(index, text) { 
     return text.replace('New', '<span class="new">New</span>'); 
    }); 
}); 

Отсюда: JavaScript/jQuery: replace part of string?

Edit:

Ricardo Lohmann «s ответ лучше, убивает функцию каждого():

$("a:contains('New')").html(function(i, text) { 
    return text.replace(/New/g, '<span class="new">New</span>'); 
}); 
7

Regex: Рабочих Демонстрационногоhttp://jsfiddle.net/WujTJ/

г =/г модификатор убеждается, что все вхождения "замена"

я -/я делаю дело матча регулярного выражения нечувствительно.

Хорошо читать: если вы заинтересованы: http://www.regular-expressions.info/javascript.html

Пожалуйста, попробуйте следующее:

Надеется, что это поможет :)

отметить Также вы, возможно, не нужны, чтобы проверить, если он содержит New или нет, потому что регулярное выражение изменится, если потребуется:

// $("a:contains('New')").each(function() { // NOT sure if you need this 
        $(this).html($(this).html().replace(/New/g, "<span class='new'>New</span>")); 
     //  }); 
3

Have вы пробовали свой код?
Он работает хорошо, как вы можете видеть here, единственная проблема в том, что вы забыли использовать модификатор g, чтобы заменить все "New" ocurrences.

Другая проблема заключается в том, что вам не нужен каждый цикл, так как вы можете видеть, что следующий код делает то же самое.
Разница в том, что не нужно зацикливать и получать элемент html дважды.

$("a:contains('New')").html(function(i, text) { 
    return text.replace(/New/g, '<span class="new">New</span>'); 
}); 

demo

Смежные вопросы