2016-09-11 67 views
-2
$("a").contents().each(function(){ 
     this.nodeValue = $.trim($(this).text()).replace("[Hello]",""); 
     $(this).prepend("Pre").append("End"); 
}); 

我想[Hello]從每個a被削減,但在同一時間,我想prepend()append()職能工作。事實上,一個replace()函數完美工作,但其他兩個失敗。儘管我在控制檯中沒有出錯。什麼是append();和prepend();限制?

請注意,nodeType$(this)3因此這是一個text類型。

爲什麼不是append()prepend()能正常工作?

+0

這應該是什麼輸出? – Roysh

回答

1

jQuery.prepend

的.prepend()方法插入指定內容

但textNodes沒有孩子,每個元素的第一個孩子,所以你不能前置元素添加到它們中。

但是你可以使用jQuery.beforejQuery.after之前插入內容和textNode後:

$("a").contents().each(function() { 
    this.nodeValue = $.trim($(this).text()).replace("[Hello]", ""); 
    $(this).before("Pre").after("End"); 
}); 

但是你需要照顧,因爲一個<a>some text</a>some text可能包含了多個文本節點,通常這應該不是這樣,但你應該是那個獎項。