2

私は画像にキャプティを付けます、私はします

$(document).ready(function(){
$('.shop_banner img').capty({height:150});
});

Chromeでデバッグするとき、captyコードalert($this.height())はゼロなので、ラッパーは画像を非表示にします。一部のブラウザが画像を完全にロードすることを望んでいることは知っていますが、使用する場合ready、ページが完全にロードされた後に実行されるという意味ではありませんか?私に何ができる?

4

2 に答える 2

5

いいえ、読み込みと準備は同じではありません。

できるよ

$(window).load(function(){
    $('.shop_banner img').capty({height:150});
});

readyは、DOM の準備が整うとすぐに関数を呼び出します。これは、画像が読み込まれるという意味ではありません。

ドキュメントから:

JavaScript は、ページのレンダリング時にコードを実行するためのロード イベントを提供しますが、このイベントは、画像などのすべてのアセットが完全に受信されるまでトリガーされません。ほとんどの場合、スクリプトは DOM 階層が完全に構築されるとすぐに実行できます。.ready() に渡されたハンドラーは、DOM の準備が整った後に実行されることが保証されているため、これは通常、他のすべてのイベント ハンドラーをアタッチして他の jQuery コードを実行するのに最適な場所です。CSS スタイル プロパティの値に依存するスクリプトを使用する場合は、スクリプトを参照する前に、外部のスタイルシートを参照するか、スタイル要素を埋め込むことが重要です。

コードが読み込まれたアセットに依存している場合 (たとえば、画像のサイズが必要な場合)、代わりにコードを load イベントのハンドラーに配置する必要があります。

于 2012-11-28T18:32:14.087 に答える
0

私は通常、何か特別なことをする前に、画像に対してロード関数を使用します。

$(function() {
    $('.shop_banner img').load(function() {
        $(this).capty({height:150});
    });
});
于 2012-11-28T18:36:13.950 に答える