0

我有像这样的html:

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

将“Lorem”更改为“Ipsum”的最佳方法是什么?这些不起作用:

// 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 方法来做到这一点。

4

3 回答 3

1

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

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

或者将 a<span>与标识符或类一起使用并以此为目标。如果您需要动态更改文本,则可能需要这样的容器。

于 2013-03-14T16:48:59.810 回答
1

丑陋的方式:

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

或更好:

$('input')[0].nextSibling.nodeValue = "Ipsum";
于 2013-03-14T16:45:55.910 回答
0

$('label').contents().last().replaceWith("Ipsum");

但是,我个人会使用nodeValue.

希望这可以帮助!

演示:http: //jsfiddle.net/dirtyd77/SLGdE/25/

于 2013-03-14T17:15:40.917 回答