我有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方法来做到这一点。
答案 0 :(得分:1)
丑陋的方式:
$('input').parent().contents().each(function(){
if(this.nodeType === 3)
this.nodeValue= "Ipsum";
});
或更好:
$('input')[0].nextSibling.nodeValue = "Ipsum";
答案 1 :(得分:1)
jQuery没有任何第一类文本节点支持。你可以:
$("input")[0].nextSibling.nodeValue = "Ipsum";
或者使用带有标识符或类的<span>
并将其作为目标。如果你需要动态更改文本,它可能需要保证这样的容器。
答案 2 :(得分:0)
$('label').contents().last().replaceWith("Ipsum");
但是,我个人会使用nodeValue
。
希望这有帮助!