【问题标题】: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() 函数中重新绑定。
  • 谢谢,我会尝试在激活时取消绑定点击事件,然后在我的功能结束时重新绑定它。

标签: jquery click jquery-animate live animated


【解决方案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);
};​

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多