1

div のテーブルでうまく表示するには、いくつかの画像の幅を知る必要があります。画像にはクラス名があります。私はこのようにします:

var image_width = $('.image_product').width(); 

その後、結果によってテーブル内の他の列を計算します。Firefox では問題なく動作します。しかし、Chrome では、画像が読み込まれる前に計算スクリプトが既に実行されています。var image_width は 0 ピクセルを返します。

これを介して画像がロードされた後、スクリプトを続行しようとしました:

$('.image_product').load(function() 
    {   
    calculate_column_width();
    });

それはうまく機能しますが、そのクラス名の画像が2つある場合はスクリプトが2回実行され、画像が3つある場合は3回実行されることがわかりました。

スクリプトを 1 回だけ続行させる簡単な解決策が見つかりません。誰がアイデアを持っていますか?

4

2 に答える 2

2

http://desandro.github.io/imagesloaded/を試しましたか?

そのプラグインでは、次のコード:

$('.image_product').imagesLoaded(function() {   
  calculate_column_width();
});

... 一致したコンテナー内のすべての画像の準備が整った後にのみ、コールバックを起動します。

于 2013-10-21T20:43:36.760 に答える
0

それらに別のクラス名を付けるか、次のスクリプトを試すことができます。

$('.image_product').first().load(function() {   
    calculate_column_width();
});

次に、そのクラス名を持つ最初の要素を取得します..しかし、それがあなたの問題に対する堅牢な解決策だとは思いません。

于 2013-10-21T20:41:11.510 に答える