如何删除所有附加到 HTML 元素的事件
Posted
技术标签:
【中文标题】如何删除所有附加到 HTML 元素的事件【英文标题】:How to remove all the attached events to an HTML element 【发布时间】: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 上时根本不会出现淡出。你知道怎么做吗??
【参考方案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)
。这会停止悬停动画并强制它淡入...以上是关于如何删除所有附加到 HTML 元素的事件的主要内容,如果未能解决你的问题,请参考以下文章