6

スクリプトにいくつかのメニューがあり、マウスを3秒間動かさないとメニューが非表示になるjqueryスクリプトが必要です。

私はその本当にばかげた質問を知っています、しかし私はどこでも答えを得ることができません。

それは適切なスクリプトではありませんが、私はそれのような何かが起こったらただ欲しいですか?

$("#target").notmousemove(function(event) {
$('#menu').hide();
},delay(500));

誰かが私の探求に答えるなら、それは非常に役に立ちます。

ボタンのクリックに基づいてメニューを非表示にしましたが、マウスを5秒以上動かさないとメニューを非表示にしたいのですが...

4

4 に答える 4

9

ハンドラーで使用setTimeoutします。mouseMoveタイムアウトが切れる前にマウスが再び動いた場合は、 でマウスをクリアして、clearTimeoutもう一度タイムアウトを再開してください。

次のようなものです:

var timeoutid = 0;
$("#someRootElement").mousemove(function() {
    if (timeoutid) {
       clearTimeout(timeoutid);
       timeoutid = 0;
    }
    timeoutid = setTimeout(myFunctionToHideMenu, 5000);
});

編集:実際、タイマーがすでに実行されているかどうかを確認する必要さえありません。無効なタイマー ID または既に停止しているタイマーを停止しようとしても、エラーは発生しません。したがって、単に次のことができます。

var timeoutid = 0;
$("#someRootElement").mousemove(function() {
    clearTimeout(timeoutid);
    timeoutid = setTimeout(myFunctionToHideMenu, 5000);
});
于 2013-01-28T16:21:18.150 に答える
2

これを試して:

var t;
var delay = 3000; //Ms delay 
$("#target").mousemove(function(){
    clearTimeout(t);

    var t = setTimeout(function(){
        //Has not been moved
        $('#menu').hide();
    }, delay);
});
于 2013-01-28T16:22:41.350 に答える
1
function notMouseMove() {
   $("#menu").hide();
}
var timer = setTimeout(notMouseMove, 3000);

$(document).on('mousemove', function () {
    clearTimeout(timer);
    timer = setTimeout(notMouseMove, 3000);
});
于 2013-01-28T16:22:25.457 に答える