2011-06-20 8 views
0

AJAX読み込みコンテンツ/画像にホバー効果(アニメーション)を追加することはできますか?現在、このコードを使用していますが、AJAXを使用せずに読み込まれた画像に対してのみ機能します。ところでAJAX読み込み画像にホバー効果を追加する方法はありますか?

$('.box').delegate('img', { 
    mouseenter: function() { 
     $(this).stop().animate({ opacity: 1.0 }, 500); 

    }, 
    mouseleave: function() { 
     $(this).stop().animate({ opacity: 0.3 }, 500); 
    } 
}); 

、あなたの元のコードでeachを使用する必要はありませんでしたが - あなたは$('.box img').hover(...)

答えて

4

Live EventsまたはDelegates行くための方法です

$('.box').delegate('img', { 
    mouseover: function (e) { 
     $(this).stop().animate({ opacity: 1.0 }, 500); 
    }, 
    mouseout: function (e) { 
     $(this).stop().animate({ opacity: 0.3 }, 500); 
    } 
}); 
+0

+1は.each()が不要であることを示しています。 – Scottie

+0

.delegate()の代わりに.live()を使用する理由は何ですか。それが行く道だと言っている人もいます。 – MJA

+0

@Matiss、私の意見、あなたはすべきではありません。特定の問題が '.delegate'で解決できない場合を除き、' .live'の代わりに '.delegate'を使うことを強くお勧めします。詳細については、文書を確認してください。 –

1

使用.delegateを使用することもできました:

$(".box img").each(function() { 
     $(this).hover(function() { 
      $(this).stop().animate({ opacity: 1.0 }, 500); 
     }, 
     function() { 
      $(this).stop().animate({ opacity: 0.3 }, 500); 
     }); 
    }); 
+0

ああ、何度も編集して、私は起源とほとんど同じコードを完成させました。 –

+0

Heh、私も。偉大な思考、考え方など – Scottie

1
$('.box').delegate('img', { 
    mouseenter: function() { 
     $(this).stop().animate({ opacity: 1.0 }, 500); 

    }, 
    mouseleave: function() { 
     $(this).stop().animate({ opacity: 0.3 }, 500); 
    } 
}); 

あなたはjQueryの.delegate()ではなく.live()を使用して、より良いパフォーマンスを得られますライブ

0

よりも優れています。

$('.box').delegate('img','hover', function(event) { 
    if(event.type === 'mouseenter') 
     $(this).stop().animate({ opacity: 1.0 }, 500); 
    else 
     $(this).stop().animate({ opacity: 0.3 }, 500) 
}); 
関連する問題