サムネイルがクリックされたときに、画像を読み込んで、jQueryを使用してDOM内のimg要素に追加しています。これを行うコードは次のとおりです。
$("#holder a").click(function (e) {
var $this = $(this);
var $img = $("#picture-holder img");
$img.attr("src", $this.attr("href")).load(function () {
console.log("done..");
});
e.preventDefault();
});
ここでの奇妙な点は、ロードが完了すると、最初に期待どおりに1つのログを書き込むことです。しかし、2回目は、前のサイズの2倍(2)になります。3回目は、6回ログに記録します。
ここで何が起こっているのかわかりません。保持されているimg要素の数を確認すると#picture-holder
、操作のたびに1が返されます。
編集1:
私は以下のようにコードを変更し、問題はなくなったと述べましたが、それが正しい方法であるかどうかはわかりません:
$("#holder a").click(function (e) {
var $img = $("#picture-holder img");
var $_img = $img.clone();
var _href = this.href;
$_img.attr("src", _href).load(function () {
console.log("done..");
$img.attr("src", _href);
});
e.preventDefault();
});
編集2:
また、これはクライアントマシンで多くのCPUを消費することに気づきました。私は何か間違ったことをしていますが、どこですか?