Как заменить более одного раза? - PullRequest
5 голосов
/ 19 октября 2010

Это мой код:

$("h1.intro:contains('|')").each(function() {
    $(this).html($(this).html().replace('|','</span><br /><span>')) 
});

Это работает только один раз, но оно должно работать для всех этих "|" ...

есть идеи?

Ответы [ 3 ]

14 голосов
/ 19 октября 2010

Добавить /g модификатор:

$("h1.intro:contains('|')").each(function() {
    $(this).html($(this).html().replace(/\|/g, '</span><br /><span>'));
});

Подробнее:

Модификатор g используется для выполнения глобального соответствия (найти все соответствиявместо остановки после первого матча).

2 голосов
/ 19 октября 2010

Если вы используете jQuery 1.4, вы можете сделать это более красиво, используя подпись .html(function)):

$("h1.intro:contains('|')").each(function() {
    $(this).html(function(idx, oldContent) {
        return oldContent.replace(/\|/g, '</span><br /><span>');
    });
});

Это означает, что вам не нужно создавать второй экземпляр jQuery и он должен работать лучше.

0 голосов
/ 19 октября 2010

Здравствуйте, добавьте модификатор к своему регулярному выражению, добавив "/ g" после "|"

$("h1.intro:contains('|')").each(function() {
    $(this).html($(this).html().replace("|/g",'</span><br /><span>')) 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...