1

テキストノードのテキストを変更するにはどうすればよいですか?

HTML:

<p class='theClass'> bbb <a href=#> foo</a> aaa </p>

'aaa'と'bbb'をに変更しようとしていhello worldます。それらのノードを選択することに成功しましたが、テキストを変更できませんでした。

これまでのJquery:

var $textNodes = $('.theClass').contents().filter(function() {
    return this.nodeType == Node.TEXT_NODE;
});

JSFiddle

$textNodes彼らのテキストを変更するためにこれで何ができますか?

4

3 に答える 3

3

nodeValueテキストノードのordataプロパティを使用します。どちらも同等に有効であり、十分にサポートされています。

$textNodes.each(function() {
    this.data = "CHANGED";
});

ちなみに、 IE <9には存在しないので、代わりにNode.TEXT_NODE使用する方がよいでしょう。3

于 2012-01-31T13:41:36.980 に答える
2

jQueryを使用してテキストノードを直接編集することはできません。

ノードで直接ネイティブdataまたはプロパティを使用するだけです。nodeValue

$textNodes.each(function() {
    this.data = "Hello world";
 // this.nodeValue = "Hello world";
});

jsFiddle

于 2012-01-31T13:41:33.383 に答える
1

MDNで長い時間をかけて見つけました:

このプロパティは、いくつかの愚かな理由で呼び出されnodeValueません...value

修正されたJQuery:

var $textNodes = $('.theClass').contents().filter(function() {
    return this.nodeType == Node.TEXT_NODE;
}).each(function(){
    this.nodeValue = "hello World";
});

JSFiddleを修正しました

于 2012-01-31T13:44:44.533 に答える