jQuery动画:忽略双击
我有一个简单的jQuery动画,在.click()事件时向右或向左移动div。
但是,如果用户单击该事件两次,则会触发两次,这会影响格式化。
这是我的一个例子:
$('a#right').click( function () { if ($(this).is(':visible')) { $('#slide').animate({right: '+=257'}, 400, function () { slide_button(); }); } });
函数slide_button()将检查div的位置是否在用户视点的可接受限度内。 如果是这样,它将允许右或左按钮可见。 如果超出限制,它将隐藏按钮。
它工作得很好,除非我点击它两次 – 然后它会直接滑出页面。
有没有办法处理这个忽略双击?
只需检查元素是否已经动画化:
$('a#right').click( function () { if ($(this).is(':visible') && !$('#slide').is(':animated')) { $('#slide').animate({right: '+=257'}, 400, function () { slide_button(); }); } });
你可以在jquery中使用one() :
$('a#right').one("click", function () { slide($(this)); }); function slide(obj) { if (obj.is(':visible')) { $('#slide').animate({right: '+=257'}, 400, function () { slide_button(); $('a#right').one("click", function () { slide($(this)); } }); }
动画完成后,click事件再次绑定到链接,最多可执行一次。
我通常通过设置一个全局变量并运行if like来解决这个问题
clicked = true; $(div).click(function(){ if (!clicked){ clicked = true; Your function with a callback setting clicked to false } .... })
单击后可以.unbind()
点击事件,这将阻止它多次执行:
$('a#right').click(function () { $(this).unbind('click'); ... });
动画完成后,如果您需要再次单击,则可以重新绑定它。