2012-03-27 3 views
4

これは明らかにそうではありません。親要素は、私がmouseleave()をやっていると思うと考えています

マイJS:

$(".job_charge.item-block").live({ 
    mouseenter: function(){ 
    $(this).find('.edit-and-delete').stop(true,true).fadeIn(); 
    }, 
    mouseleave: function(){ 
    $(this).find('.edit-and-delete').stop(true, true).fadeOut(); 
    } 
}); 

私のHTML:

<div id="job_charge_2244" class="item-block job_charge"> 
      <div class="edit-and-delete right"> 
      </div> 
</div> 

CSS:

.item-block.job_charge 
    border-bottom: 1px dotted #ccc 
    display: inline-block 
    padding-bottom: 15px 
    width: 650px 

    .edit-and-delete 
    position: relative 
    display: none 
    top: 25px 
    right: 5px 
    float: right 
    a 
     margin-right: 8px 

私はバナナを行ってきました。私の内側のdivのリンク上にマウスを置くと、すぐにマウスの離脱機能が起動され、それらは非表示になります。このdivは当然position: relativeですが、私はblockに入れましたが、それでも同じ問題があります。

親のdivはinline-blockです。

+2

親要素と子要素の両方に 'CSS'を表示します。子要素が 'float'に設定され、あなたの親が実際にあなたが予想していたよりも小さくなる可能性はありますか? –

+3

これは、DOMに関する限り、親要素を離れたままにしておき、子要素の上にマウスを移動すると再びその要素を再入力するからです。これに関するいくつかのアイデアについては、[ここ](http://www.quirksmode.org/js/events_mouse.html#mouseover)をご覧ください。 – Blazemonger

+0

子要素は 'float:right'です。 – Trip

答えて

2

子要素がfloatに設定されている可能性があり、あなたは親が実際にあなたが期待するよりも小さけれにテストすることができます私のフィドルリンク。 floatを削除するか、overflow: autoを親に貼り付けてみてください。

+1

私の場合は、絶対的に配置されていたので、私は子要素のZ-インデックスを1に設定しなければなりませんでした。理由を知らないでください、なぜなら、これは今のところ真実だからです。 –

+0

オーバーフローありがとうございました:浮動要素を含む親のauto、私はこれを幸せに認識していませんでした。 – dajoto

+0

私はそれが 'overflow:hidden'でした – Snickbrack

1

これを代わりに試してみてください。基本的に同じですが、マウスセンターとマウス離しの組み合わせ機能である.hoverを使用しています。子供に入るときに親を離れてバグはありません。

$(".job_charge.item-block").hover(function(){ 
    $(this).children(".edit-and-delete").fadeIn(); 
}, function(){ 
    $(this).children(".edit-and-delete").fadeOut(); 
}); 

http://jsfiddle.net/YWRRZ/4/ < - あなたはそれ

+1

このコードは、質問のコードと同じことをします。ドキュメントでは、 'hover'メソッドは' $(セレクタ).mouseenter(handlerIn).mouseleave(handlerOut); 'の略語です。 – Guffa

+0

絶対に、習慣の力は私に.hover方法を表示するように強いました –

12

mouseentermouseleaveイベントは、この状況を正しく処理するように特別に設計されています。子要素を入力すると、子要素が実際に親要素内にある場合は、親に対してトリガーされたイベントはありません。mouseleave

http://jsfiddle.net/baCsd/

私はあなたが実際に子要素を配置し、あなたのコード内で何かを持っていると思います:私はあなたのコードをしようとすると

、それは私が子要素を置くとmouseleaveイベントをトリガしません。の親要素の外側にあるので、mouseleaveイベントがトリガーされます。

たとえば、親要素にコンテンツがない場合は、高さを与えるパディングのみなので、15pxのみで、子要素は親要素の下に配置できます。

+0

これは私を助けました。ありがとう! – Brendan

+1

良いこと私は受け入れられた答えに止まらなかった。 – Andrew

+0

彼はmouseoutを使用している可能性があります。 – eomeroff

関連する問題