在jQuery Cycle插件中单击时暂时禁用下一个/上一个按钮(链接)(不一定是jquery循环问题)

我需要阻止点击链接,比如让我们说2秒钟。

这是一个例子http://jsbin.com/orinib/4/edit

当您查看渲染模式时,您会看到下一个和上一个链接。 当您单击下一步时,它会以良好的过渡进行滑动。 但是,如果多次单击,则没有转换类型,这是预期的。 但我的问题是:这是如何防止点击下一个链接约2秒(或转换发生所需的时间),以便无论发生什么样的转换。 这是我试图使用的,但没有用:

function(){ var thePreventer = false; $("#next").bind($(this),function(e){ if(!thePreventer){ thePreventer = true; setTimeout(function(){ thePreventer = false; }, 2000); }else{ e.preventDefault(); } }); 

}

我从哪里获得点击后暂时“禁用”链接? 我认为。 我相信我无法通过此代码实现此效果(尽管它适用于其他链接)。 我相信这是因为循环插件获得了该链接,我知道我必须绑定/挖掘插件的这个function。 请注意:这段代码可能无法正常工作我只是用它来表明我尝试了它并且它不起作用,你可以重复使用它,如果你必须或给我你自己的东西。

如果可以的话请帮忙。

编辑 :正如mrtsherman提出的这个简单而优雅的答案 : http : //jsfiddle.net/LCWLb 。

看一下循环选项页面 。 有很多方法可以做到这一点。 我会考虑在onPrevNextEvent上使用寻呼机事件。 您可以分配回调函数。

 $('#slideshow').cycle({ pager: '#nav', onPrevNextEvent: function(isNext, zeroBasedSlideIndex, slideElement) { //disable controls }, after: function(currSlideElement, nextSlideElement, options, forwardFlag) { //reenable controls } }); 

以下内容将暂时阻止幻灯片运行时的点击次数, 如下图所示 :

 $.fn.extend({ delayClick: function(callback) { this.bind('click', function(e) { $self = $(this); if( $self.hasClass('disabled') ) { $('#log').append('

click prevented on '+$self.attr('id')+'

'); } else { $self.addClass('disabled'); callback.call(this, [arguments]); setTimeout(function() { $self.removeClass('disabled'); }, 1000); } return false; }); } });