我想确保如果一个#offer img触发了附加到事件处理程序的函数,那么在第一个函数完成其作业之前,没有其他#offer img触发另一个函数。我发现我需要有点Singleton。 这是我试图做的事情:
$(document).ready(function () {
var inProgress = false;
$('#offer img').mouseover(function (event) {
if (!inProgress) {
inProgress = true;
$('#offer div img').addClass('gray');
$(event.target).removeClass('gray');
var clickedId = event.target.id;
var textId = '#' + clickedId.substr(0, clickedId.search('_'));
$('.innerContent p:visible').fadeOut(300, function () {
$(textId).fadeIn();
});
inProgress = false;
} else {
return;
}
});
});
不工作。这段代码出了什么问题? 任何帮助表示赞赏:)
答案 0 :(得分:1)
问题是在你的所有fadeIn和fadeOut函数完成解析之前,inProg设置为False immediatley。所以你的mouseOver函数已经完成,但fadeIn和fadeOut却没有。
如果你希望inProgress不被设置,直到淡入完成类似
$('.innerContent p:visible').fadeOut(300, function () {
$(textId).fadeIn(300, function(){
inProgress = false;
});
});
} else {
return;
}