2012-02-13 79 views
1

我想對存儲在jQuery對象中的某些元素的文本執行「查找和替換」操作。我想用使用正則表達式選擇器的javascript函數.replace()替換文本。如何糾正此示例代碼?jQuery:使用.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

或者重新寫你已經得到使用.h的組合TML和的.text

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

1.你能提供一個鏈接到jQuery的文檔說明你告訴我的輸入參數。我無法找到你在jQuery .html()文檔頁面上告訴我的解釋。 – 2012-02-13 21:55:50

+0

2.我需要使用.text()函數獲取元素的內容,而不是.html()。你能相應地修改你的答案嗎? – 2012-02-13 21:56:01

+0

2.但你想保留元素的孩子,不要以爲你可以用.text() – ekhaled 2012-02-15 13:20:28