在确定如何重新启用事件处理程序方面遇到一些麻烦。
我试图在动画结束前多次执行该函数。
这是一个小提琴:
这是我的代码:
$("#buttons a").click(function () {
$('a').off();
// Remove class from current active
$("#buttons a").removeClass('active');
// Change class on clicked button
$(this).addClass("active");
// Hide Non-Clicked Content
$(".main_content").fadeOut("fast");
$("#content_container").slideUp("slow");
// Find Selected
var selected = $(this).attr("href");
// Show Selected
$("#content_container").slideDown("slow", function () {
$(selected).fadeIn("slow");
});
return false;
});
答案 0 :(得分:2)
如果我正确理解您的示例,您希望通过删除事件来阻止动画多次运行。
如果您删除该活动,除非您再次附加活动,否则无法再次点击该活动。
以下是基于您的代码的示例:http://jsfiddle.net/MkmnW/4/
$(document).ready(function () {
$("#buttons a").click(function () {
$('a').off("click");
clickMenu(this);
return false;
});
function clickMenu(el){
// Remove class from current active
$("#buttons a").removeClass('active');
// Change class on clicked button
$(el).addClass("active");
// Hide Non-Clicked Content
$(".main_content").fadeOut("fast");
$("#content_container").slideUp("slow");
// Find Selected
var selected = $(this).attr("href");
// Show Selected
$("#content_container").slideDown("slow", function () {
$(selected).fadeIn("slow");
$("#buttons a").click(function () {
$('a').off("click");
clickMenu(this);
return false;
});
});
}
});
答案 1 :(得分:0)
您可以$(element).unbind('click');
解锁点击事件。与所有其他类型的事件相同。
然后,您可以使用$(element).bind('click', function(evt) { ... });
如果是动画,您可以$(element).click(function(evt) { $(this).stop().fadeOut("fast").whatever... });