3

jQueryを使用してテキストから新しいDOM要素を作成します。

例:

jQuery('<div><img src="/some_image.gif"></img></div>');

このステートメントが実行されると、ブラウザはサーバーにファイル「some_img.gif」を要求します。

結果のjQueryオブジェクトをDOMトラバーサルから使用できるようにこのステートメントを実行する方法はありますが、実際にはブラウザーが画像やその他の参照コンテンツの要求でサーバーにアクセスすることはありませんか?

例:

var jquery_elememnts = jQuery('<div><img class="a_class" src="/some_image.gif"></img></div>');
var img_class = jquery_elememnts.find('img').attr('class');

私が今持っている唯一のアイデアは、正規表現を使用して、jQueryを使用してHTMLを評価する前に、画像要素やその他のブラウザー要求をトリガーするものからすべての「src」タグを削除することです。

jQueryを使用して、評価されたHTML内の参照コンテンツをサーバーに要求するようにブラウザーをトリガーせずに、HTMLを評価するにはどうすればよいですか?

ありがとう!

4

4 に答える 4

5

正規表現の方法を実行する場合は、おそらく次のような単純な方法です。

    htmlString.replace(/[ ]src=/," data-src=");

仕事をしますか?

だから探す代わりに:

    jquery_elememnts.find('img').attr('src');

あなたは探す必要があります:

    jquery_elememnts.find('img').data('src');
于 2012-09-09T21:35:55.780 に答える
2

それは不可能です。imgブラウザが、を介して別のリソースを参照するを含むHTMLフラグメントなどのHTMLフラグメントをロードすると、ブラウザはsrcそれをフェッチしようとします。

classただし、から属性を取得するだけでよい場合はimg、を使用$.parseXML()してを取得しXMLDocument、それを処理して必要な属性を取得できます。このように、HTMLフラグメントがロードされることはないため、画像はフェッチされません。

var jquery_elememnts = $.parseXML('<div><img class="a_class" src="http://4.bp.blogspot.com/-B6PMBqTyqpk/UC7syX2eRLI/AAAAAAAABL0/SEoLWoxgApo/s1600/google10.png"></img></div>');
var img = jquery_elememnts.getElementsByTagName("img")[0];
var img_class = img.getAttribute("class");

デモ

于 2012-09-09T19:27:22.753 に答える
1

parseXMLjQueryで使用できます。

var elements = jQuery.parseXML('<div><img class="a_class" src="/some_image.gif"></img></div>');
var img_class = $(elements).find('img').attr('class');
alert(img_class);

文字列は完全なXMLである必要があります。これは私が同様の目的で使用した回避策ですが、これで問題が解決するかどうかはわかりません。

于 2012-09-09T19:46:23.767 に答える
1
var jquery_elememnts = (new DOMParser()).parseFromString('<div><img class="a_class" src="/some_image.gif"></img></div>', 'text/html'); 
var img_class = jQuery(jquery_elememnts).find('img').attr('class');
于 2015-08-31T08:20:22.510 に答える