2013-03-14 63 views
0

节点我有HTML这样的:更新“文本”与jQuery

<label><input type="radio" /> Lorem</label> 

有什么改变“排版”到“存有”的最佳方式?这些不工作:

// nope: 
$('input').next().text('Ipsum'); 

// also nope: 
var text = $('input').parent()[0].childNodes[1]; 
$(text).text('Ipsum'); 

我可以很容易地更改HTML到:

<label><input type="radio" /><span> Lorem</span></label> 

或直接使用replaceWholeText DOM方法:

$('input').parent()[0].childNodes[1].replaceWholeText(' Ipsum'); 

或任意数量的其他事情,但我想知道是否有一个干净的jQuery方式来做到这一点。

回答

1

丑陋的方式:

$('input').parent().contents().each(function(){ 
    if(this.nodeType === 3) 
    this.nodeValue= "Ipsum"; 
}); 

或者更好:

$('input')[0].nextSibling.nodeValue = "Ipsum"; 
1

的jQuery没有任何一流的文本节点的支持。您可以:

$("input")[0].nextSibling.nodeValue = "Ipsum"; 

或使用<span>标识符或类和目标。如果您需要动态更改文本,则可能需要这样的容器。