.ajax() 呼び出しからのデータに対する jQuery .find() は、div ではなく "[object Object]" を返します。質問する

.ajax() 呼び出しからのデータに対する jQuery .find() は、div ではなく

を使用して、返されたデータ内でdivを含む要素を検索しようとしています。残念ながら、は返されません。id="result".ajax().find()alert(result)div#result

これが私のコードです:

$.ajax({
    url: url, 
    cache: false,
    success: function(response) {
        result = $(response).find("#result");
        alert(response); // works as expected (returns all html)
        alert(result); // returns [object Object]
    }
});

ベストアンサー1

具体的に質問にお答えすると、正しく動作しているようです。 を返すとおっしゃいましたが[object Object]、これは jQuery が メソッドで返すものですfind("#result")。クエリに一致する jQuery 要素を返しますfind

次のように、そのオブジェクトの属性を取得してみてください。result.attr("id")が返されるはずですresult


#result一般的に、この答えは、が最上位の要素であるかどうかによって異なります。

#resultが最上位要素である場合、

<!-- #result as top level element -->
<div id="result">
  <span>Text</span>
</div>
<div id="other-top-level-element"></div>

find()動作しません。代わりに以下を使用してくださいfilter():

var $result = $(response).filter('#result');

#resultトップレベルの要素でない場合は、

<!-- #result not as top level element -->
<div>
  <div id="result">
    <span>Text</span>
  </div>
</div>

find()働くでしょう:

var $result = $(response).find('#result');

おすすめ記事