【问题标题】:How to remove all the attached events to an HTML element如何删除所有附加到 HTML 元素的事件
【发布时间】:2014-06-20 15:50:35
【问题描述】:

我想知道如何将所有附加的事件删除到 jQuery 中的 HTML 元素。我们假设我们有以下指令:

$('<div class="notification" style="bottom:'+ind+'px">Message envoyé '+i+'<span class="close">x</span></div>').fadeIn(1000,"linear").delay(5000).fadeOut(3000,"linear");

如何在不使用 on()、bind()....等的情况下删除附加到 html 事件的fadeIn、delay 和fadeOut 事件??...实际上我尝试使用.off(), .unbind()、.die()、.undelegate() 但它不起作用。有人有想法吗?

提前致谢。

【问题讨论】:

  • 那些不是事件,那些是 jQuery 函数。事件是点击、鼠标悬停、按键等。
  • 这些不是事件:它们是排队函数。也许dequeue 可以解决问题? api.jquery.com/dequeue 这不太可能,因为您需要在调用 fadeIn 之前中断控制流。
  • 那些不是事件,它们被添加到动画队列中。那么.stop()呢? api.jquery.com/stop
  • @ajm:我尝试了 dequeue() 方法,但是当我将鼠标悬停在 div 上时会直接淡出,我真正想要的是当我将鼠标悬停在 div 上时根本不会出现淡出。你知道怎么做吗??

标签: jquery html events detach


【解决方案1】:

我猜你想在悬停内停止动画...我没有你的 html 和 css,但我创建了一个 JSBIN。很抱歉,我正在设置我的开发环境。

// where msgEl is the new element you create
msgEl 
  .hover(function(){
    tmpl.stop(1,1).fadeIn(1);
  },function(){
    tmpl.stop(1,1).fadeIn(1);
  })
  .hide(0)
  .fadeIn(1000,"linear")
  .delay(5000)
  .fadeOut(3000,"linear");

JSBIN

【讨论】:

  • 我试过了,但是当我将鼠标悬停在 div 上时它会直接消失,我真正想要的是当我将鼠标悬停在 div 上时不会出现淡出。
  • 好的,我把它改成悬停行为,抱歉一开始不清楚:)
  • 事实上,这是我的完整代码:link...我应该在下面的行中添加什么以使其正常工作??:var a = $('
    消息特使'+i+'x
    ').fadeIn(1000,"linear").delay (5000).fadeOut(3000,"linear").hover(function(){},function(){});提前致谢。
  • 没错,只需在第一个悬停回调中添加$(this).stop(1,1).fadein(1)。这会停止悬停动画并强制它淡入...
猜你喜欢
  • 2019-09-09
  • 2011-06-22
  • 1970-01-01
  • 2017-01-22
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 2023-03-24
相关资源
最近更新 更多