2012-04-29 1 views
1

私は画像を持っていますが、JQueryを使用すると、その画像の上にマウスを置くと画像が大きくなります画像は上にスライドし、半透明で画像領域の下半分を占める画像上にオーバーレイを提供する。ホバリング時に他の(zオーダー)の背後にある要素に焦点を当ててください

これはうまくいきますが、オーバーレイの上にマウスを置いても(イメージと同じ領域に)、イメージは表示されなくなるため、画像が縮小されるため、ホバーアウトイベントが発生します発砲した。

「画像の領域にいる限り、オーバーレイの上にマウスを置いたときに気にしない」というように、ホバーオーバーレイを無視する方法を教えてください。

+2

あなたが実際の例を提供する場合あなたを助けるためにはるかに簡単です。 http://jsfiddle.net/はそれにぴったりです – skip405

答えて

0

mouseenterとmouseleaveの代わりにmousemoveイベントを使用し、画像の寸法を使用してマウスが画像上にあるかどうかを判断できます。

例:ここでライブ

 $(window).mousemove(function(evt) { 
      var image = $("#image"); 
      var imageX0 = image.offset().left 
      var imageY0 = image.offset().top 
      var imageX1 = imageX0 + image.width() 
      var imageY1 = imageY0 + image.height() 
      if(evt.pageX >= imageX0 && evt.pageX <= imageX1 && evt.pageY >= imageY0 && evt.pageY <= imageY1) { 
       $("#status").text('Hovered!') 
      } else { 
       $("#status").text('Not hovered') 
      } 

     }) 

チェックアウト:http://dl.dropbox.com/u/486054/stackoverflow/hover-overlay.html

+0

ええ、問題は、[リンク]のHoverPulseスクリプトを使用して画像をホバーするとサイズが大きくなるということです。http://jquery.malsup.com/hoverpulse/ 。その例のように画面に複数の画像があるので、ここではウィンドウイベントが最善の解決策であるかどうかはわかりません。私は明日私の他のコンピュータでコードに手を差し伸べることができるときに試してみる。 –

+0

イメージごとにmousemoveハンドラを追加することができます(実際のイメージオブジェクトに$( "#image")を変更します)。ご覧のとおり、ハンドラは毎回現在の寸法を計算します。したがって、基本的には複数の画像で動作し、画像のサイズ変更を適切に処理する必要があります。 – daeq

関連する問題