jquery で、$("<img src='aa' />") などとすると、すぐにHTTPリクエストが投げられてしまうのを避けたいです。

まだappend もしていないのにです。
無駄な通信を減らすために、これを避けることはできますか? 教えてください。
文字列からjQueryオブジェクトを整形できさえすれば、.html() でもなんでもいいです。

でも、無理かもしれません。下記のコードでも、通信が始まりました。(latest FireFox)
new Image().src="aa";

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/11/05 23:57:59
  • 終了:2011/11/06 01:41:07

ベストアンサー

id:y-kawaz No.1

y-kawaz回答回数1419ベストアンサー獲得回数2252011/11/06 01:02:40

ポイント80pt

結論でてるようですが無理です。

document.createElement("img").src="aa";

の時点で通信が発生するので、これは内部でDOMを参照することが前提のjQueryオブジェクトの生成前の段階に起こるので回避できません。

id:piglovesyou

ありがとうございます。かなって思いました。

もともと、htmlテキストの中に使いたいものがあってそれを取り出したかっただけなので、正規表現つかうことにします。

2011/11/06 01:39:17

その他の回答(1件)

id:y-kawaz No.1

y-kawaz回答回数1419ベストアンサー獲得回数2252011/11/06 01:02:40ここでベストアンサー

ポイント80pt

結論でてるようですが無理です。

document.createElement("img").src="aa";

の時点で通信が発生するので、これは内部でDOMを参照することが前提のjQueryオブジェクトの生成前の段階に起こるので回避できません。

id:piglovesyou

ありがとうございます。かなって思いました。

もともと、htmlテキストの中に使いたいものがあってそれを取り出したかっただけなので、正規表現つかうことにします。

2011/11/06 01:39:17
id:Cherenkov No.2

Cherenkov回答回数1502ベストアンサー獲得回数4922011/11/06 01:30:55

ポイント20pt

src属性に追加するタイミングをずらすだけでいいのでは?

setTimeoutなりtriggerとbindでイベント駆動にしたり。

$("<img>")だけ作っておいてsrcは好きなときに入れる仕組みを考えるだけ。

どういう状態で画像のパスを持っていて、どのタイミングでappendしたいのか表明すれば誰かが具体的なサンプルを提示できるかもしれません。


demo: http://jsfiddle.net/jtCg9/

<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>
window.onload = function() {
	var src = 'http://www.hatena.ne.jp/images/badge-q-used-hover.gif' + '?' + (+new Date());
	setTimeout(function() {
	  document.getElementById('logo').src = src;
	}, 1000);
};
</script>
</head>
<body>
<img id="logo" src="">
</body>
</html>
id:piglovesyou

回答ありがとうございます。

やりたいことはちょっと違って、$("img要素を含むものすごい長いHTMLテキスト") を、img[src]による通信なしにパースしたかったんです。$("<img/>")から組み立てるんではなく。でも、どうもむりそうです。

2011/11/06 01:37:34
  • id:tdoi
    こんな手で本質的には回避できるでしょうけどね。
    http://labs.unoh.net/2008/01/lazy-loading-of-images.html

    画像自体は読みに行っちゃいますね。
  • id:piglovesyou
    >tdoiさん
    ありがとうございます。ちょっと読みました。僕の場合はテキストからなので、
    htmlText.replace(/(<img[^>]+?)src(.+?\/>)/g, function (a,b,c) {return b+'orgSrc'+c;});
    とでもやるしかないみたいですね。やりませんが。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません