阻止实时点击事件,直到该功能没有结束?
Posted
技术标签:
【中文标题】阻止实时点击事件,直到该功能没有结束?【英文标题】:Block a live click event until that function isn't over? 【发布时间】:2012-12-07 01:42:32 【问题描述】:有人可以帮我修复这个代码吗?
我想要的是阻止实时('click'
)功能,直到sliddingright
功能完成。
('li.menu-item').live('click', function(event)
if( !$(this).is(':animated'))
sliddingright(page_id_target_right,previous_right_old,previous_right,next_right,pages_numbers);
);
【问题讨论】:
sliddingright
可以接受回调吗?
我不太明白你说的回调是什么意思,但我想这是可能的
你必须解绑点击事件,然后在 sliddingright() 函数中重新绑定。
谢谢,我会尝试在激活时取消绑定点击事件,然后在我的功能结束时重新绑定它。
【参考方案1】:
只需向您的slidingright 函数添加一个return 语句,该函数在完成其任务后返回“standby”,保存它并在下次调用“click”时检查其值。
像这样:
var state = 'standby';
('li.menu-item').live('click', function(event)
if( !$(this).is(':animated') && state == 'standby' )
state = 'processing';
state = sliddingright(page_id_target_right,previous_right_old,previous_right,next_right,pages_numbers);
);
【讨论】:
感谢您的回答,我尝试了您的解决方案,但这不适用于我的情况... $(document).ready(function() var state = 'standby'; $(' li.menu-item').live('click', function(event) if( !$(this).is(':animated') && state == 'standby' ) state = 'processing'; state = sliddingright(page_id_target_right,previous_right_old,previous_right,next_right,pages_numbers); ); 在 sliddingright 函数结束时,我正在返回“待机”状态 问题是在我的向右滑动功能中,即使动画没有完成,我也会发送状态“待机” 我解决了这个问题,我添加:state = 'standby';返回状态;在我的向右滑动功能中的最后一个动画动作【参考方案2】:试试:
clickMe = function()
$('li.menu-item').live('click', function(event)
$('li.menu-item').off('click');
sliddingright(page_id_target_right, previous_right_old, previous_right, next_right, pages_numbers);
);
$('li.menu-item').on("click", clickMe);
;
【讨论】:
以上是关于阻止实时点击事件,直到该功能没有结束?的主要内容,如果未能解决你的问题,请参考以下文章
尽管从点击事件中调用,Safari 仍会阻止视频上的 play()