【问题标题】:Event handlers jQuery事件处理程序 jQuery
【发布时间】:2012-10-12 03:35:47
【问题描述】:

我有以下代码:

$("button").click(function(){
    $("button").off('click');  //detach click for the button below
}

然后在<body>标签下面有这个按钮

<button>PLAY ANIMATION</button>

所以问题是我可以将这段代码放在哪里?

$("button").bind('click'); // In other words I want to 
//reattach the click event that I just disabled at some later point

【问题讨论】:

  • 退后一步...这里的结局是什么?你想做什么?
  • 我有一个地图动画,当按钮上发生点击事件时,动画就会播放。但是在播放动画时,我不希望用户单击按钮。只有动画完成后才能再次点击播放按钮。
  • 你可以把它放在动画回调函数中..!
  • 动画完成后重新附加事件。 “如果提供,则在动画完成后触发完整的回调函数”,但是,使用 .on 而不是 bind - “从 jQuery 1.7 开始,.on() 方法是附加事件处理程序的首选方法一份文件。”
  • 我可以先隐藏然后再显示,这与我想要的非常接近。

标签: jquery events


【解决方案1】:

工作演示 http://jsfiddle.net/2NNGv/1/

你也可以.is(":animated")检查!

jQuery ajax, wait until beforeSend animation finishes

希望它符合:) 的原因并给你一些想法!

示例代码

$("button").click(function() {

    $(this).prop('disabled', 'disabled');

    $('div').animate({
        marginLeft: "-200",
        marginTop: "-200",
        width: "400",
        height: "400"
        // Comment the line below to see difference
        ,
        opacity: 0.5
    }, 2000).animate({
        marginLeft: -150,
        marginTop: -150,
        width: 300,
        height: 300
        // Comment the line below to see difference
        ,
        opacity: 1
    }, 2000).show(function() {
        $("button").removeAttr('disabled');
    });

});​

【讨论】:

  • 太棒了,但我应该提到它是天气雷达循环的传单动画。
  • 这是一个很好的例子,但是我唯一能做的就是我的第二个想法,即在动画期间隐藏按钮然后再次显示它。
  • @gdoron 哦,老兄!欢迎回来!你好吗? 太棒了见到你,你回来了,我过得很好! :) 现在!现在你在身边,所以你会很兴奋:)你的假期过得怎么样?今天喝一杯我会在我们见面时给你:)
  • @jimdif 如果您想在此处隐藏 Working Demo 按钮:jsfiddle.net/FEk2j 这应该符合您的需要!
  • @Tats_innit。我还在休息,凌晨 4 点 30 分醒来......所以...... :)
【解决方案2】:

使用.promise()等待动画完成,稍后附加点击事件。

在此处查看示例:http://jsfiddle.net/RASG/gkveX/

返回一个 Promise 对象以观察某个类型的所有操作何时发生 绑定到集合,无论是否排队,都已完成。

此处的文档:http://api.jquery.com/promise/

【讨论】:

    【解决方案3】:

    你试过绑定和解除绑定吗?

    $('#foo').bind('click', function() {
      alert('The quick brown fox jumps over the lazy dog.');
    });
    
    // will NOT work
    $('#foo').unbind('click', function() {
      alert('The quick brown fox jumps over the lazy dog.');
    });
    

    这里是来源http://api.jquery.com/unbind/

    您可以绑定按钮,然后在动画期间取消绑定,然后再次绑定以启用点击事件。

    【讨论】:

      猜你喜欢
      • 2014-09-10
      • 1970-01-01
      • 2017-10-10
      • 2013-07-04
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多