jQuery 帮助取消绑定,然后在动画序列后再次绑定
我有以下 js 函数,我想防止发生任何事情并在单击事件发生后排队。然后当函数结束时允许单击事件再次发生。
$("#tweet_activate a").click(function(){
if($('body').hasClass('home')) {
$(this).parent().stop(true,true).animate({top: "+=154"}, 400).delay(1200).fadeOut();
} else {
$("#int_comp").animate({width: "+=157"}, 100);
$(this).parent().stop(true,true).animate({top: "+=154"}, 400).delay(1200).fadeOut();
}
$("#tweet_text").delay(400).animate({right: "+=56"}, 400);
$("#tweet").delay(900).animate({right: "+=214"}, 400);
$("#tweet_deactivate").delay(1200).fadeIn();
$("#tweet_text p, #tweet_text span, #tweet #links").delay(1200).fadeIn();
$("#eye").delay(600).fadeOut();
return false;
});
$("#tweet_deactivate a").click(function(){
if($('body').hasClass('home')) {
} else {
$("#int_comp").animate({width: "-=157"}, 400);
}
$("#tweet_text p, #tweet_text span, #tweet #links").fadeOut();
$("#tweet").stop(true,true).animate({right: "-=214"}, 400);
$("#tweet_text").delay(400).animate({right: "-=56"}, 400);
$(this).parent().delay(900).animate({top: "-=154"}, 400).delay(200).fadeOut()
.delay(600).animate({top: "+=154"}, 100);
$("#tweet_activate").animate({top: "-=154"}, 500).delay(650).fadeIn();
$("#eye").delay(1000).fadeIn();
return false;
});
该网站位于此处 - http://danielhollandphotography.com/
如果您单击右侧图标上的“加号”网格你会看到序列发生。如果您在中间单击该图标,您会看到它再次启动。
谢谢,马特
I have the following js function and I would like to prevent anything from happening and queueing once the click event has happened. Then when the function ends allow the click event to happen again.
$("#tweet_activate a").click(function(){
if($('body').hasClass('home')) {
$(this).parent().stop(true,true).animate({top: "+=154"}, 400).delay(1200).fadeOut();
} else {
$("#int_comp").animate({width: "+=157"}, 100);
$(this).parent().stop(true,true).animate({top: "+=154"}, 400).delay(1200).fadeOut();
}
$("#tweet_text").delay(400).animate({right: "+=56"}, 400);
$("#tweet").delay(900).animate({right: "+=214"}, 400);
$("#tweet_deactivate").delay(1200).fadeIn();
$("#tweet_text p, #tweet_text span, #tweet #links").delay(1200).fadeIn();
$("#eye").delay(600).fadeOut();
return false;
});
$("#tweet_deactivate a").click(function(){
if($('body').hasClass('home')) {
} else {
$("#int_comp").animate({width: "-=157"}, 400);
}
$("#tweet_text p, #tweet_text span, #tweet #links").fadeOut();
$("#tweet").stop(true,true).animate({right: "-=214"}, 400);
$("#tweet_text").delay(400).animate({right: "-=56"}, 400);
$(this).parent().delay(900).animate({top: "-=154"}, 400).delay(200).fadeOut()
.delay(600).animate({top: "+=154"}, 100);
$("#tweet_activate").animate({top: "-=154"}, 500).delay(650).fadeIn();
$("#eye").delay(1000).fadeIn();
return false;
});
The site is here - http://danielhollandphotography.com/
If you click on the 'plus' sign on the right icon grid you'll see the sequence happen. If you click the icon mid way through you'll see it fire again.
Thanks, Matt
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只需向元素添加一个小检查。启动动画后,将布尔值设置为 true,单击时使您的第一个检查
这应该起作用。尝试一下。
你可以看到关键是 attr("is-animated");我无法在主按钮中进行检查,因为在应用该属性之前它已经定义了单击事件。奇怪的。哦,好吧,如果您将 click 事件的内容包装在 if 语句中,就像我在前面的示例中所做的那样,它就可以工作。然而,与前面的示例不同的是,我将一个属性附加到此处的锚标记并读取它以查看它是否处于动画状态。这样您就可以拥有多个具有此类事件“阻塞”的元素
Just add a small check to the element.Once you start the animation set a bool to true, on click make that your first check
This should work. Give it a try.
you can see the key is the attr("is-animated"); I cannot do the check in the main button because that has already defined the click event before I have applied the attribute. Strange. Ohh well, if you wrap the contents of the click event in a if statement like I did in the previous example it works. Unlike the previous example however I am attaching a attribute to the anchor tag here and reading it to see if it is in a state of animation. This way you can have multiple elements with this type of event 'blocking'