私が経験した矛盾をよりよく理解できるように、私の考えを確認したいと思います。
Mouseleave と mouseenter は、mouseout と mouseover と同様に、互いに組み合わせて使用する必要があります。Mouseleave と mouseover を混在させるのは悪い習慣です。
Mouseleave はもともと IE 専用でした
mouseleave と mouseout の主な違いは、親を終了するときに mouseleave がトリガーされることです (これは私が望んでいることです)。一方、親内の兄弟間を移動するとき、および親を離れるときに mouseout がトリガーされます (これは私が望んでいないことです)。 )。
したがって、私の問題は一貫性のない動作です。mouseleave を使用すると、スクリプトがイベントにバインドされたコードを実行する場合と実行しない場合があることがわかりました。
絶対に馬鹿と呼んでください。しかし、親の #send_To の横または下にマウスを移動すると、mouseleave がトリガーされることがわかりました。私が上からマウスアウトした場合、そうではありませんでした。
そのため、他の場所にフォーカスを設定することで、この動作が削除されることがわかりました。ただし、まだ完全に一致しているわけではありません。また、場合によっては、どちらの方法で終了しても、イベントがトリガーされないことがあります。繰り返しますが、お気軽に笑ってください。ただし、マウスをゆっくり動かすよりも、マウスを速く動かす方がイベントをトリガーする可能性が高いことがわかりました。これについて正当な合理的な理由を思いつくことはできません。私が見つけたものを報告しているだけです。
私には意味をなさないこの動作が見られる理由を理解したいと思います。
$("#send_To").bind("mouseleave",
function(event){
$("#send_To").css("display","none");
$("#message").focus(); // added this seems to improve behaviour
}
);
誰かアドバイスしてください。これは、jquery が正規化されているためですか。mouseleave イベントがトリガーされることを保証する鋳鉄製の方法はありますか。