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>

または、replaceWholeTextDOMメソッドを直接使用します。

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

または他の多くのものがありますが、これを行うためのクリーンなjQueryの方法があるかどうか疑問に思っています。

4

3 に答える 3

1

jQueryはファーストクラスのテキストノードをサポートしていません。あなたは出来る:

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

<span>または、識別子またはクラスでaを使用し、それをターゲットにします。テキストを動的に変更する必要がある場合は、おそらくそのようなコンテナが必要です。

于 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 に答える