コメントできないので、これを答えとして書きます!
CSSセレクター ":hover"とホバーイベントの違いを理解してください!
":hover"はcssセレクターであり$("#elementId").is(":hover")
、このように使用すると実際にイベントとともに削除されましたが、その意味ではjQueryイベントホバーとはまったく関係ありません。
コード化した$("#elementId:hover")
場合、要素はマウスでホバーしたときにのみ選択されます。上記のステートメントは、純粋で正当なcss選択でこの要素を選択するときに、すべてのjQueryバージョンで機能します。
一方、イベントホバーは
$("#elementId").hover(
function() {
doSomething();
}
);
実際、jQuery 1.8として非推奨になりました。ここでは、jQuery Webサイトの状態です。
イベント名「hover」が使用されている場合、イベントサブシステムはイベント文字列で「mouseenter mouseleave」に変換します。これはいくつかの理由で迷惑です:
セマンティクス:ホバリングは、マウスが要素に出入りすることと同じではありません。発砲する前に、ある程度の減速または遅延があることを意味します。イベント名:添付されたハンドラーによって返されるevent.typeはホバーではなく、mouseenterまたはmouseleaveのいずれかです。他のイベントはこれを行いません。「hover」の名前の併用:「hover」という名前のイベントを添付して、.trigger( "hover")を使用してイベントを起動することはできません。ドキュメントはすでにこの名前を「新しいコードには強く非推奨」と呼んでいますが、正式には1.8で非推奨にし、最終的には削除したいと思います。
彼らが使用法を削除した理由is( ":hover")は不明ですが、まあ、あなたはまだ上記のように使用できます。
(function ($) {
/**
* :hover selector was removed from jQuery 1.8+ and cannot be used with .is(":hover")
* but using it in this way it works as :hover is css selector!
*
**/
$.fn.isMouseOver = function() {
return $(this).parent().find($(this).selector + ":hover").length > 0;
};
})(jQuery);
ああ、私はタイムアウトバージョンを推奨しません。これは非常に複雑になるためです。他に方法がない場合は、この種のものにタイムアウト機能を使用し、すべての場合の95%で別の方法があると信じてください。
私がそこのカップルの人々を助けることができれば幸いです。
グリーツアンディ