1

新しいjQuery要素を作成します。

var myJqEl = $('<div id="myDiv">Div content<span>Span content</span></div><p>P content</p>');

次に、findメソッドを使用します。

var mynewEl1 = myJqEl.find('div').html(); // return null
var mynewEl2 = myJqEl.find('span').html(); // return Span content
var mynewEl3 = myJqEl.find('p').html(); // return null

1番目と3番目がnullを返し、2番目が完全なコンテンツを返す理由を教えてください。

ありがとうございました。

4

3 に答える 3

2

およびの代わりに使用filterします。divp

var mynewEl1 = myJqEl.filter('div').html();
var mynewEl2 = myJqEl.find('span').html();
var mynewEl3 = myJqEl.filter('p').html();​
于 2012-12-12T04:08:06.577 に答える
1

すべてのHTMLコンテンツを別の要素(たとえば、div1つ)にラップする必要があります。したがって、このコード:

var myJqEl = $('<div><div id="myDiv">Div content<span>Span content</span></div><p>P content</p></div>');

したがって、必要な正しい要素が得られ、それにメソッドを使用できますfind

詳細については:

を使用して新しい要素を作成すると$、jQueryはそれと呼ばれるオブジェクトを作成しますWrapped Set。このラップされたセットは実際にはjavascript配列であるため、次のようなものを作成すると次のようになります。

$('<div id="myDiv">Div content<span>Span content</span></div><p>P content</p>');

2つのオブジェクトを持つ配列があります。最初のオブジェクトはあなたのものdivで、2番目のオブジェクトはpです。google chrome Web Inspectorには、次のようなものが表示されます。

[<div id=​"myDiv">​…​&lt;/div>​, <p>​P content​&lt;/p>​]

findラップされたセットのようなメソッドを使用すると、最初の要素(divこの例ではタグ)で実行されます。

mynewEl2これが、正しいデータを返す理由です。タグは(ラップされたセットの最初の要素)にspan存在するため、タグ自体にはタグがありません。だから空です。divdivdivmynewEl1

また、すべてのHTMLデータを1つのタグにラップすると、ラップされたセットには1つの要素のみが含まれ、すべてのHTMLデータがそこに存在します。

于 2012-12-12T04:11:30.637 に答える
0

ルートレベルには2つの異なる要素があります。これらの2つの要素を含む「ルート」がある場合、1行目と3行目は取得しませんnull

たとえば、次のmyJqElように変数を定義してみてください。

var myJqEl = $('<div><div id="myDiv">Div content<span>Span content</span></div><p>P content</p></div>');
于 2012-12-12T04:15:50.270 に答える