我有这个用jQuery 1.2.5编写的javascript.它包含在我编写的插件的main函数()中.该插件是一个非常类似于jCarousel的水平图库滚动条.它可以自动计算宽度,并根据图像的大小和图像的大小确定滚动的数量,这就是正在进行的所有计算.
我的问题是,如何在上一次执行完成之前阻止它被触发.例如,如果我得到一点点快乐,只是疯狂地混搭.digi_next
.在发生这种情况时,用户界面的情况不会很好,我想解决它:)我认为答案可能在于queue
,但我尝试使用它并没有发现任何有价值的东西.
var self = this; $(".digi_next", this.container).click(function(){ var curLeft = $(".digi_container", self.container).css("left").split("px")[0]; var newLeft = (curLeft*1) - (self.containerPad + self.containerWidth) * self.show_photos; if (newLeft < ((self.digi_gal_width - (self.containerPad + self.containerWidth) * self.show_photos)) * -1) { newLeft = ((self.digi_gal_width - (self.containerPad + self.containerWidth) * self.show_photos)) * -1; } $(".digi_container", self.container).animate({ left: newLeft + "px" }, self.rotateSpeed); });
Jim.. 10
只需使用全局忙标志即可.当您输入单击处理程序时,请检查它,并且仅在它为假时才继续.立即将其设置为true,然后在动画结束时将其设置为false.JavaScript是单线程的,因此无需担心竞争条件.
var busy = false; $("...").onclick(function() { if (busy) return false; busy = true; $("...").animate(..., ..., ..., function() { busy= false; }); return false; });
cllpse.. 5
看看jQuery UI.特别是插件的效果部分.我在我的个人网站上使用了幻灯片效果(点击方框两侧的箭头).
我阻止用户在效果结束前多次触发效果 - 使用一个事件处理程序和一个回调函数.
这是源代码
只需使用全局忙标志即可.当您输入单击处理程序时,请检查它,并且仅在它为假时才继续.立即将其设置为true,然后在动画结束时将其设置为false.JavaScript是单线程的,因此无需担心竞争条件.
var busy = false; $("...").onclick(function() { if (busy) return false; busy = true; $("...").animate(..., ..., ..., function() { busy= false; }); return false; });
看看jQuery UI.特别是插件的效果部分.我在我的个人网站上使用了幻灯片效果(点击方框两侧的箭头).
我阻止用户在效果结束前多次触发效果 - 使用一个事件处理程序和一个回调函数.
这是源代码