5

はい、私はこの質問が以前に尋ねられたことを知っていますが、うまくいく答えを見つけることができません。これは、他の質問の1つから受け入れられた回答です。

$('#element').hover(function()
{
    $(this).data('timeout', window.setTimeout(function()
    {
        alert('hovered for 2 seconds');
    }, 2000));
},
function()
{
    clearTimeout($(this).data('timeout'));
    alert('mouse left');
});

http://jsfiddle.net/nCcxt/

ご覧のとおり、本来の機能を果たしていません。

必要なのは理論的には単純ですが、機能させることはできません。ユーザーがリンクに2秒間カーソルを合わせると、関数が呼び出されます。ユーザーが2秒経過する前にマウスを離すと、何も起こりません。

4

1 に答える 1

14

コードは完全に正常に機能しますalert()それは、mouseoutイベントがトリガーされる原因となる呼び出しが原因でのみ中断し ます。

私たちはそれから何を学びますか?フォーカス/ホバー/マウスムーブ関連のイベントと組み合わせて使用​​しないでください。alert()

ちなみに、あなたがやりたいことのために利用可能なjQueryプラグインはすでにあります:http://cherne.net/brian/resources/jquery.hoverIntent.html

于 2012-06-16T11:36:25.173 に答える