0

画像を読み込んだ後にクラスを追加する次のコードがあります。

$('.single aside img').attr('src', 'assets/img/ajax-loader.gif');

$('.single aside img').attr('src', url).load(function () {  
    $('.single aside img').addClass('loaded');
});

しかし、それは機能していません。ロードする前にクラスを追加します。何か案は?

4

2 に答える 2

1

私があなたのコードで間違っていると思う主なことは、あなたのコールバック関数で、あなたが最初に使用したのと同じセレクターを使用しているということです。

あなたがしたいことは、ロードされた実際の要素を参照することです。このために、$(this)キーワードを使用できます。

$('.single aside img').attr('src', url).load(function () {  
  $(this).addClass('loaded');
});

// another interpretation of the code...
// var loaded = 'loadedClass';
// $('.single aside img').attr('src', url).load(function () {  
//   $(this).addClass(loaded);
// });

コードに引用符がありませんでしたが、これは単なるコピー貼り付けエラーであると思われるため、無視しています。

于 2013-01-06T00:03:46.647 に答える
0

http://api.jquery.com/load/loadでわかるように、メソッドはサーバーからデータを取得するためのものです (Ajax 呼び出し) 。イベントをイメージにバインドする必要があります。load

var loaded = 'loadedClass';
$('.single aside img').attr('src', url).bind('load', function () {
    $(this).addClass(loaded);
});
于 2013-01-06T04:40:55.523 に答える