阻止实时点击事件,直到该功能没有结束?

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);
;​

【讨论】:

以上是关于阻止实时点击事件,直到该功能没有结束?的主要内容,如果未能解决你的问题,请参考以下文章

阻止点击事件

为啥阻止a标签的默认事件

父元素阻止冒泡时未触发单击事件

尽管从点击事件中调用,Safari 仍会阻止视频上的 play()

vue阻止冒泡事件 阻止点击事件的执行 结合div和组件阻止点击事件

事件冒泡和阻止事件冒泡