問題: 外側の div の上にマウスを移動すると、予想されるスライド メソッドがトリガーされますが、マウスが外側の div 内に移動すると、1 回ではなく複数回トリガーされます。イベントは子ではなく親要素にバインドされているため、バブルの問題ではないと思います。また、stopPropagating(); を使用して、イベントが「バブルアップ」するのを防ぎます。
html マークアップは次のとおりです。
<div class="outer">
<div class="inner">Lorem ipsum dol
<div class="clear"></div></div>
</div><div class="clear"></div>
そしてCSS:
.outer {
float: left;
width: 220px;
height: 200px;
background-color: #06F;
}
.inner {
float: left;
width: 220px;
height: 99px;
background-color: #0F6;
margin-top: 100px;
}
そしてjquery
$(".outer").hover(function(e){
e.stopPropagation();
//$(".inner").fadeOut("slow");
$(".inner").stop(true, true).hide("slide", {direction: "down"}, "slow");
}, function(e){
e.stopPropagation();
//$(".inner").fadeIn("slow");
$(".inner").stop(true, true).show("slide", {direction: "down"}, "slow");
});
ちなみに、コメント付きのコードは正常に動作します。
jsfiddle リンク: http://jsfiddle.net/94hvS/