3
 $("#" + mainContent).children("span").replaceWith(function(){ return $(this).text(); });

上記のコード行を使用すると、すべてのスパンをテキスト値に置き換えることができないようです。

htmlは次のようになります

<div id="bla" contenteditable="true">
<span> bla finds this one</span>
    <div>
        <span> doesnt find me </span>
    </div>
</div>

div "bla" 内のすべてのスパンを選択してすべて置き換えるにはどうすればよいですか?

置換は機能しますが、検索は機能しません。

4

4 に答える 4

9

の代わりに.find [docs]を使用してください.children。子だけでなく、すべての子孫を検索します。

すべての異なるトラバーサル メソッドについては、jQuery API を参照してください: http://api.jquery.com/category/traversing/tree-traversal/

于 2012-09-03T11:46:26.170 に答える
4

あなたは試すことができます:

$('span',"#" + mainContent).each(function(){this.html('Something Different')})

それらを置き換えようとしているものにも依存します。

于 2012-09-03T11:47:01.347 に答える
4

children()jQueryの関数は、直接の子のみに一致します。DOM 構造の場合、セレクターが一致<span>する の直接の子である要素は1 つだけです。<div>セレクターに一致する要素の階層の下にあるすべての要素を検索する場合はfind()、階層を下って検索を実行する which を使用するか、セレクターを変更する必要があります。

$('div span')div の下にあるすべてのスパンと、DOM 階層の下にあるすべてのスパンに一致します。

$('div > span') は、DOM 内の div の直接のすべてのスパンの子に一致します。

于 2012-09-03T11:51:33.923 に答える
1

.children() の代わりに .find() を使用します。

$("#" + mainContent).find("span").replaceWith(function(){ return $(this).text(); });
于 2012-09-03T11:49:24.080 に答える