2009-04-01 15 views
60

Ajaxで読み込まれたソースのHTML文字列があります。 HTMLをドキュメントに入れる前に、この文字列のオブジェクト(画像)からいくつかの属性を取得したいと思います。jQueryを使用してhtmlの文字列を解析します。

私のようなものを持っている:

$.ajax({ 
     url: uri+'?js', 
     success: function(data) { 
      var htmlCode = $(data).html(); 

      $('#otherObject').html(data); 
     } 
    }); 

は、どのように私はこのHTML文字列から属性(例えばsrc)を得ることができますか?

答えて

106

私は100%わからないんだけど、

$(data) 

はどこにも接続されていない、そのデータのためのDOMとjQueryオブジェクトを生成しないのだろうか?または、すでにDOMとして解析されている場合は、$( "#myImg"、データ)、または必要に応じてセレクタを使用できます。あなたのデータは 'は既にあなただけ行くことを意味DOM、(そうでなければ、より正確な選択をする必要があります、あなたのDOMで唯一のimgがありますと仮定した場合)

で表示されますあなたの質問を読み直す

EDIT

$("img", data).attr ("src") 

src属性にアクセスする場合。

$.ajax({ 
     url: uri+'?js', 
     success: function(data) { 
       var imgAttr = $("img", data).attr('src'); 
       var htmlCode = $(data).html(); 
       $('#imgSrc').html(imgAttr); 
       $('#fullHtmlOutput').html(htmlCode); 
     } 
    }); 

これは#fullHtmlOutputへのデータから全体のHTMLブロックをロードしなければならない:あなたのデータはテキストだけであれば、それはおそらくMarvinS.-

てみ

$("img", $(data)).attr ("src") 
+2

あなたの答えをありがとう!それは解決策です:)私はそれを見ませんでした。私はあなたに良い最初の4月してほしい - そして今私は残念になるだろう;) – MarvinS

+0

mhm、私は私のコメントをregreatしてきました。あなたの例doens'tはすなわちのために働く(バージョン7でテストされた)。私は "$(data)" - "data" - "$(data).html()"を使いました。助言がありますか? – MarvinS

+0

$( "img"、$( '

'))はFFで働いています(IE7を持っていません)。 IMGタグだけを封入したり、身体に囲んだりすることはできませんでした。おそらくそれは単一のエンティティに変換されますか? $(data).attr()を直接試しましたか? – falstro

2

を行うために働くだろうイメージのsrcを#imgSrcにコピーします。

1

ちょうどちょうどあなたinterstedて要素ではありません注意する

1

一つFF IEでテストした最初のもの、それを確認するためにあなたのimg要素beforコンテナ要素を追加する - 私はあなたに応じて、今日まさにこの問題を抱えていたとして、 HTML jQueryはそれをよく解析するかどうかはしません。 jQueryは自分のHTMLを正しいDOMに解析しませんでした。小さなXML準拠のファイルではうまくいきましたが、Ajaxコールバックに渡すと解析しなかったHTMLは解析されませんでした。

最後に、私は単純に文字列の中で私が望んでいたタグを探しましたが、理想的ではありませんでしたが、うまくいきました。

+0

これは、ページ全体を解析する場合に役立ちます。http://stackoverflow.com/a/1069953/854477 –