2012-02-13 2 views
1

Я хочу выполнить операцию «найти и заменить» над текстом определенных элементов, хранящихся в объекте jQuery. Я хочу заменить текст, используя функцию javascript .replace(), которая использует селектор регулярных выражений. Как исправить этот пример кода?jQuery: заменить текст внутри элемента using .replace()

$(JQUERY_OBJECT).html(
    $(this).text().replace(/REGEX_EXPRESSION/, 'REPLACEMENT_TEXT') 
); 

Примечание: объекты JQuery Я манипулируя может содержать дочерние элементы, но я не хочу, чтобы сохранить их. Вот почему я использую .text(). Если можно запустить функцию .replace(), не отбрасывая внутренние элементы, это было бы здорово.

ответ

0
var text = $(this).text().replace(/REGEX_EXPRESSION/, 'REPLACEMENT_TEXT'); 
$(this).text(text); 

Или вы можете использовать replaceWith вместо второго текста(), если это более подходит?

2

При использовании последней версии jQuery метод .html() принимает функцию в качестве аргумента, функция получает текущий контент в качестве аргумента, а возвращаемое значение используется для замены текущего содержимого.

Так что код будет:

$(JQUERY_OBJECT).html(function(idx,oldHtml){ 
    //idx is the index of the current element in the JQUERY_OBJECT 
    return oldHtml.replace(/REGEX_EXPRESSION/, 'REPLACEMENT_TEXT') 
}); 

http://api.jquery.com/html/#html2

Использование .text() это та же самая история

$(JQUERY_OBJECT).text(function(idx,oldText){ 
    //idx is the index of the current element in the JQUERY_OBJECT 
    return oldText.replace(/REGEX_EXPRESSION/, 'REPLACEMENT_TEXT') 
}); 

http://api.jquery.com/text/#text2

Или переписать то, что вы уже получили используя комбинацию .htm l и .text

$(JQUERY_OBJECT).html(function(idx,oldHtml){ 
    return $(this).text().replace(/REGEX_EXPRESSION/, 'REPLACEMENT_TEXT') 
}); 
+0

1. Не могли бы вы предоставить ссылку на документы jQuery, объясняющие входные аргументы, о которых вы мне рассказывали. Я не мог найти объяснения того, что вы мне рассказали на странице dQ jQuery .html(). –

+0

2. Мне нужно получить содержимое элемента с помощью функции .text(), а не .html(). Не могли бы вы пересмотреть свой ответ соответственно? –

+0

2. Но вы хотели бы сохранить дочерние элементы, Не думайте, что вы можете сделать это с помощью .text() – ekhaled

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