2017-01-19 12 views
3

で、このHTML文字列をルートレスDOMをナビゲート?もちろん、それを新しく作成したものに埋め込むことはありません。考えるとjQueryの

dom.find("p");// [] 
+2

もちろん。あなたが項目のリストを持っているとき、あなたは通常、それらを*必要な項目に絞り込むでしょう。 –

+2

['.find()'](https://api.jquery.com/find/): "_セレクタ、jQueryオブジェクト、または要素によってフィルタリングされた、一致する要素の現在のセット内の各要素の子孫を取得します。 _ _ "対[' .filter() '](https://api.jquery.com/find/):"一致する要素のセットをセレクタと一致するものに減らすか、関数のテストに渡します._ " – Andreas

答えて

4

あなたはトップレベルの要素を取得するためにfilter()を使用する必要があります何のルート要素がありません:

var string = "<div></div><p></p>"; 
 
var $dom = $(string).appendTo('body'); // appendTo() is only for purposes of this demo 
 
$dom.filter("p").text('hello world!');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

.findは、要素の内側に見えます。あなたのケースでは、divと互いに隣に段落を作成していますが。段落をdiv内に移動すると、コードが機能します。

また、これらの要素の両方を3番目の親にラップすることもできます。

var string = "<div><p></p></div>"; 

var dom = $(string); 

console.log(dom.find("p")); 
+1

I htmlには目的があると思いますが、domの下を移動するときにはあなたのソリューションが動作します – empiric

+0

しかし、彼は.findを使っているので、それが何をしているかを知っているかもしれません。 Roryは、それがopが望むものであれば、.filterをカバーしています。 –

0
var html = "<div></div><p></p>"; 
var parser = new DOMParser(); 
var dom = $(parser.parseFromString(html, "text/html")); 

//work with dom 
dom.find("p"); 

パーサは、HTMLドキュメント(文書に添付されていない)を作成します。