#childBox {
width:200px;
height:200px;
border:solid thin #900;
}
<div id="parentBox">
<div id="childBox">
<select>
<option>Opt1</option>
<option>Opt2</option>
<option>Opt3</option>
</select>
</div>
<div id="mesIn"></div>
<div id="mesOut"></div>
</div>
var i = 0, y=0;
$('#parentBox').on({
mouseenter:function(e){
//console.log ('in: ');
i++; $('#mesIn').text('IN '+i);
},
mouseleave: function(e){
//console.log ('out: ');
y++; $('#mesOut').text('OUT '+y);
}
}, '#childBox');
マウスがオプションに入ると、最初に「out」として起動し、次に「in」として起動します。
このprbはFF23とIE9で見つかりました(FFはクラッシュし
ています)Chrome 28とOpera 12.16
では正常に機能していますjquery 1.10.02があります
上記のコード: http://jsfiddle.net/buicu/ZCmRP/1/
私のコードのより詳細なバージョン: http://jsfiddle.net/buicu/ZH6qm/4/
setTimeout/clearTimeout を大量に配置できることはわかっています。しかし、もっとシンプルでクリーンなものが欲しいです。
e.stopImmediatePropagation(); 役に立ちません(少なくとも私のテストでは)。
クリックを選択にバインドする (および変数を false に設定する) ことも役に立ちません。選択ドロップダウンメニューが開いたままになり、マウスが大きなメニューを離れた場合、大きなメニューも開いたままになるためです(マウスがいつオプションを離れたかを追跡し、変数を元に戻すことができることを知っています。しかし、マウスが離れたときにチェックするこのオプションは、ブラウザー間で一貫して行うことはできません)。
このバグを簡単に修正できる人はいますか?