私はjQuery plug-in
を使って、マウス操作でサイズ変更した背景画像をズームすると便利です。それを動作させるために複数の画像のforループとjqueryのloadイベントを処理すると、最後にロードされた1つの小道具だけが返されます
、私はそれを持って来るすべての要素のbackground-image
のwidth
とheight
でobjects
のarray
を使用することを考えました。
img
要素を作成しましたこれを行うには、背景画像に
src
属性を設定し、それがロードされていたら
width
と
height
を得ます。
jQueryイベントload
が呼び出されたときに、すべてのイメージを準備するfor loop
から処理すると考えました。ロードされたイメージに関するすべての情報で新しい配列要素を作成します。
load
イベントが最初に読み込まれたイメージを設定し、その後に読み込まれるすべての要素に同じプロパティを適用するようですが、どうすればこの問題を回避できますか?私はプラグインを、私はあなたが画像と対話しようとした場合の画像は、その後、設定されている方法を確認するためのスクリプトを追加しましたではhttp://jsfiddle.net/tonino/CFPTa/
でここに完全な作業例を報告してきた
// this is a portion of the plugin
var setImageSize = function (i) {
return function (e) {
// I use the extend method only to get different zoom animation if they are added by the user
instances[i] = {id:i, element:this_obj.get(i), settings:$.extend(true, defaults, options)};
instances[i].settings.bg.url = getBackgroundUrl(i);
instances[i].settings.bg.width = parseInt($(this).width());
instances[i].settings.bg.height = parseInt($(this).height());
updateDefaultValues(instances[i]);
$(instances[i].element).hover(setRollOver(i), setRollOut(i));
$(window).resize(getUpdateDefaultValues(i));
$('#debug').html($('#debug').html() + 'image loaded: ' + i + ' url:' + instances[i].settings.bg.url +'<br/>width: '+ instances[i].settings.bg.width +' height: '+ instances[i].settings.bg.height +'<br>- - - - - <br>');
$(this).remove();
}
}
var prepareImageSize = function (i) {
var img = $('<img id="jquery-background-zoom-'+i+'"/>');
img.hide();
img.bind('load', setImageSize(i));
$('body').append(img);
img.attr('src', getBackgroundUrl(i));
}
var init = function() {
for (var i = 0; i < this_obj.length; i ++) {
prepareImageSize (i);
}
}
init();
すべての画像の小道具が最後に読み込まれた画像によって上書きされていることに気付くでしょう。
以前のロードイベントや何かを上書きするロードイベントのようですが、どうすれば修正できますか?私は気づく
に提案する方法を行うことができ、私は何のでわかりません働いていない。各画像に異なるサイズを表示しているようです...少なくとも表示セクションに基づいています...どのブラウザを使用していますか? – Gus
画像とやりとりしようとすると問題が起きます。申し訳ありませんが、このプラグインが何をしているのかは言及していませんでした。画像の上にマウスを置くと、 'background-image magnifier'あなたはすべての画像が最後にロードされたものとして扱われることに気づくでしょう – vitto