我有我從頭開始放置在下面的幻燈片菜單代碼。我試圖增加一個超時功能來防止由於多次點擊造成的太多滑動和滑出。每200ms只有一次點擊應該實際觸發動畫。我試過並嘗試過,但無法弄清楚。幫幫我! :)超時功能,以防止太多的點擊動畫
var togglerWidth = $('#mobile-menu-toggler').css('min-width');
var slideLeft = function() {
var menuWidth = $('#mainmenu-mobile').width(); //get width of main menu
$('#mobile-menu-toggler').animate({
width: menuWidth
},
500,
'swing',
function() {
});
$('#mainmenu-mobile').animate({
right: "0px"
},
500,
'swing',
function() {
});
}
var slideRight = function() {
var menuWidth = $('#mainmenu-mobile').width();
$('#mobile-menu-toggler').animate({
width: togglerWidth
},
500,
'swing',
function() {
});
$('#mainmenu-mobile').animate({
right: -menuWidth
},
500,
'swing',
function() {
});
}
var activate = function() {
$('#mainmenu-mobile, #mobile-menu-toggler').addClass('active-menu');
}
var deactivate = function() {
$('#mainmenu-mobile, #mobile-menu-toggler').removeClass('active-menu').addClass('inactive-menu');
}
$("#mobile-menu-toggler").click(function() {
$(this).toggleClass('inactive-menu');
$('#mainmenu-mobile').toggleClass('inactive-menu');
if ($(this).hasClass('inactive-menu')) {
slideRight();
deactivate();
} else {
slideLeft();
activate();
}
});
$(document).mousedown(function (e) {
var container = $("#mobile-menu-wrap");
if (!container.is(e.target) && container.has(e.target).length === 0) {
slideRight();
deactivate();
}
});
FIDDLE:http://jsfiddle.net/Lam9rwLg/2/
你可能想用'.stop(真,真)'。請參閱:http://api.jquery.com/stop/ – 2014-10-07 23:27:23
我以前曾嘗試過。這是可以的,因爲它可以防止過多的動畫,但是如果您在短時間內意外點擊兩次,它會打開並關閉您。 – 2014-10-07 23:40:31
你想接受領先的點擊嗎?或只有最後一次點擊?,即當用戶再次點擊一個按鈕,然後在150ms內再次點擊,你是否希望它只觸發第一個,忽略第二個,反之亦然? – 2014-10-07 23:54:00