2012-02-07 13 views
1

このコードDIVオーバーレイ

$(document).ready(function(){ 
    $(".one").hover(
     function(){ 
      $(".overlay").fadeTo(200,1).show(); 
     }, 
     function(){ 
      $(".overlay").delay(500).fadeTo(200,0); 
     } 
    ); 
}); 

は、第1、第2の上にDIV、同じページ上の複数のインスタンスのための休憩をオーバーレイします。私は$(this)を置く必要があると思う。どこかにはどこにあるのか分からない。

何か助けていただければ幸いです。

+0

HTMLコードのヘルプとJSFiddleがさらに優れています。 – gdoron

+0

あなたは何を意味するのか分かりません。あなたは[jsfiddle.net](http://jsfiddle.net)を提供できますか? –

+0

私はJSFiddleをやっていますが、サイトは高速で読み込まれていないようです。 – Andy

答えて

2

トラバーサルでアクセスできます。それが要素「1」の子であると仮定すると、これは、その要素が「1つ」の「オーバーレイ」という名前の子にのみ適用されます。

$(".one").hover(
    function(){ 
     $(this).children(".overlay").fadeTo(200,1).show(); 
    }, 
    function(){ 
     $(this).children(".overlay").delay(500).fadeTo(200,0); 
    } 
); 

Heres参照番号jQuery tree traversal。そうだね、あなたがthisを必要としなかった

+0

素晴らしいです。これはうまくいきます! http://jsfiddle.net/AndyMP/vDBRk/4/ – Andy

+1

アニメーションの前に.stop(true、true)を追加すると、ホバーの開始/停止の可能性のある無限チェーンを防ぐことができます。ここでは例としてhttp: /jsfiddle.net/73Y8x/ – CMYJ

+0

興味深いことに、遅延効果を削除します。しかし、私はあなたが言ったように、より速い移行がアニメーションの連鎖を排除すると思います。 – Andy

1

jQueryの

$(document).ready(function(){ 
    $(".one").hover(
     function(){ 
      $(".overlay",this).fadeTo(200,1).show(); 
     }, 
     function(){ 
      $(".overlay",this).delay(500).fadeTo(200,0); 
     } 
    ); 
}); 

はここjsFiddle(見やすくするために減少高さが)です。

"this"の仕組みは、.one divの上にマウスを置くと、 "this"はあなたの上に乗っているdivを指します。ホバーイベント内の関数は、上に乗っているdivを参照し、あなたが何をしたいのかを行います。 「this」がなければ、関数内で適用されるアクションは、div内のオーバーレイがオーバーラップしているだけでなく、「オーバーレイ」クラスを持つすべての要素に適用されます。 "this"は、ホバリングされた要素( "this")に基づいて適用されるアクションを事実上制限します。つまり、$(".overlay",this)はコンテキストを修飾し、それを制限します。

+0

私は経験によると、私はこの部分がどのように変化するかに慣れるだろうと思う実装されました。私はどこかで$を落とそうとしていました。助けてくれてありがとう。 – Andy

+1

私の例の文脈で彼の作品についての簡単な説明を追加しました。 – j08691

+0

再度、感謝します。 – Andy

関連する問題