0

フォームに div があります。

<div id="foo">
<div>koko</div>
<div>lala</div>
Plain text here
<div>Another div</div>
</div>

「ここにプレーンテキスト」を保持するためにjqueryを使用したいのですが、他のdivに他の内部要素を表示したくありません。

私はこのように使って.notみました:

alert($("#foo).not("div").text());

しかし、何も表示されません。

4

5 に答える 5

3

あなたがする必要があるのは、次のとおりです。

$('#foo *').remove();​​​​​​​​​

セレクターは #foo 内のすべての要素を選択し、探しているテキストのみが保持されます。

デモ

于 2012-09-15T17:37:03.773 に答える
2

ラップされたテキストを削除したいだけなら、これでうまくいくかもしれません:

$("#foo *").remove();

私はあなたの質問を誤解していますか?

于 2012-09-15T17:37:03.337 に答える
2

これを試して:

var text = $('#foo').clone().find('*').remove().end().text()

http://jsfiddle.net/LtMHE/

于 2012-09-15T17:37:05.093 に答える
1

代わりにこれを試してください:

alert($("div#foo").clone().children().remove().end().text());

これが役立つことを願っています!!

于 2012-09-15T17:49:42.447 に答える
0

プレーン テキストを取得するもう 1 つの方法は、これらの jQuery メソッド -> contents() および filter() を使用することです。

内容[ソース: ドキュメント] :

説明: textおよび commentノードを含む、一致した要素のセット内の各要素の子を取得します。

したがって、DIV ノードと #text ノードの両方を取得できます。

フィルター[ソース: ドキュメント] :

一致した要素のセットを、セレクターに一致するか 、関数の test に合格する要素に減らします。

機能テストでは、必要なもの、つまりテキスト ノード (nodeType == 3、テキスト) のみを保持します。したがって、最終的には次のようになります。

$("#foo").contents().filter(function(){ return this.nodeType == 3}).text().trim();

(トリム()は、サンプル内のすべての改行を選択しないようにするためのものです。改行もテキストであるため)

デモ js フィドル

于 2012-09-15T18:42:30.300 に答える