人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

jquery で、$("<img src='aa' />") などとすると、すぐにHTTPリクエストが投げられてしまうのを避けたいです。
まだappend もしていないのにです。
無駄な通信を減らすために、これを避けることはできますか? 教えてください。
文字列からjQueryオブジェクトを整形できさえすれば、.html() でもなんでもいいです。

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

●質問者: piglovesyou
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● y-kawaz
●80ポイント ベストアンサー

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

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

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


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

2 ● Cherenkov
●20ポイント

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>

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

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ