我旁邊的html:如何改變只有文本節點在元素
<label for="user_name">
<abbr title="required">*</abbr>
Name
</label>
我想標籤標題更改爲Title
使用jQuery。所以我做
$('label[for=user_name]').html('Title')
它取代所有內部HTML(與abbr
標籤)
那麼,什麼最簡單的方法只有Name
更換?
我旁邊的html:如何改變只有文本節點在元素
<label for="user_name">
<abbr title="required">*</abbr>
Name
</label>
我想標籤標題更改爲Title
使用jQuery。所以我做
$('label[for=user_name]').html('Title')
它取代所有內部HTML(與abbr
標籤)
那麼,什麼最簡單的方法只有Name
更換?
如果使用contents()
方法也將返回文本節點。由於jQuery的沒有文本節點的方法,最後節點轉換爲DOM節點
$('label[for="user_name"]').contents().last()[0].textContent='Title';
讓我們假設他沒有喜歡操縱只有1個標籤 – 2012-03-31 14:31:24
有趣的..我每個輸入只有一個標籤,所以它適合我 – MikDiet 2012-03-31 18:13:50
注意:'textContent'屬性* *不*在版本9之前的IE中可用。 – 2015-02-09 09:44:05
It may not be the prettiest way, but this works:
var $label = $('label[for=user_name]');
$label.html($label.html().replace("Name", "Title"));
哎呀!同樣的答案我已經發布..忘了這麼多晚:( – Jigs 2012-03-31 14:04:46
哈哈沒有擔心:) – 2012-03-31 14:07:10
可以使用replace
做到這一點
var html = $('label[for=user_name]').html().replace('Name','Testing');
$('label[for=user_name]').html(html);
我不知道哪個標籤將..可能是'名稱',可能是別的.. – MikDiet 2012-03-31 14:11:33
埃文斯解決方案加入到jQuery的新生力量,使它的使用舒適:
// get/change node content not children
jQuery.fn.content = function(n){
var o = $(this).clone();
var c = o.children().remove();
if (typeof n === "string"){
o.html(n);
$(this).html(c).append(n);
}
return o.html();
}
使用方法:$('myselector').content('NewContentString');
這是工作在大多數瀏覽器
$('label[for="user_name"]').contents().last()[0].nodeValue = 'Title';
這一次差點,但由於的textContent不支持
$('label[for="user_name"]').contents().last()[0].textContent='Title';
注意:textContent屬性在版本9之前的IE中不可用。 – 2015-02-09 09:44:53
如果你操縱多在IE8給問題的解決1標籤你可以選擇每個標籤並用jquery替換文本:
$('label[for="user_name"]').contents().last().replaceWith("Title");
和第二個標籤:
$('label[for="user_lastname"]').contents().last().replaceWith("Title2");
等等...
看起來像**的副本[在jQuery中,如何更改元素的文本而不更改其子元素?](http://stackoverflow.com/questions/4106809)** – hippietrail 2012-10-11 09:54:00