6

これは非常に単純な質問であり、私も良い答えを見つけることができないようです。

$.get('/myurl.html', function(response){
     console.log(response); //works!
     console.log( $(response).find('#element').text() ); //null :(
}, 'html');

HTML応答をトラバースしようとしています。これまでのところ、それが機能すると考えることができるのは、bodyタグの内側に正規表現し、それを文字列として使用して、トラバース可能なjQueryオブジェクトを作成することだけです。しかし、それはばかげているようです。これを行う正しい方法を指摘したい人はいますか?

多分それは私のhtmlですか?

<html> 
    <head> 
       <title>Center</title> 
    </head> 
    <body> 
        <!-- tons-o-stuff -->
    </body>
</html>

これも正常に機能しますが、私のニーズには合いません。

$('#myelem')。load('/ myurl.html #element');

4

4 に答える 4

7

<html>好きじゃないので失敗<body>

ここで説明されている方法を使用する: DOM 用の JavaScript パーサー

$.get('/myurl.html', function(response){
     var doc = document.createElement('html');
     doc.innerHTML = response;

     console.log( $("#element", doc).text() );
}, 'html');

上記が機能するはずだと思います。

于 2012-04-05T16:53:12.603 に答える
1

jQuery が HTML を解析するとき、通常は html タグと body タグが削除されます。そのため、検索している要素が文書構造の最上位にある場合、html タグと body タグが削除されると、find関数は場所を特定できない可能性があります。探している要素。

詳細については、この質問を参照してください - jQuery を使用して HTML の文字列を検索する

于 2012-04-05T16:54:59.973 に答える
0

これを試して:

$("#element", $(response)).text()

これは、$(response) を DOM オブジェクトとして扱い、$(response) 内の要素 ID を検索します。

于 2012-04-05T16:47:20.870 に答える
-1

何か勘違いしているかもしれませんが、

.find('#element')

次のように、「要素」の ID を持つ要素に一致します。

<p id="element">

「大量の」HTML が表示されないため、検索しようとしている要素がわかりません。

于 2012-04-05T16:57:00.753 に答える