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

时间:2011-11-03 20:33:00

标签: javascript jquery jquery-cycle

我需要阻止点击链接,比如让我们说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();
    }
});

}

我从这里得到"Disable" a link temporarily when clicked?我想。我相信我无法通过此代码实现此效果(尽管它适用于其他链接)。我相信这是因为循环插件获得了该链接,我知道我必须绑定/挖掘插件的这个功能。请注意:这段代码可能不起作用我只是用它来表明我尝试过它并没有用,你可以重复使用它,如果你必须或给我你自己的东西。

如果可以,请帮忙。

修改: 正如 mrtsherman 提出这个简单而优雅的 ANSWER http://jsfiddle.net/LCWLb

2 个答案:

答案 0 :(得分:2)

看看cycle options page。有很多方法可以做到这一点。我会考虑在onPrevNextEvent上使用寻呼机事件。您可以指定回调函数。

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

答案 1 :(得分:0)

以下内容会暂时阻止幻灯片显示运行时的点击次数as shown in this fiddle

$.fn.extend({
    delayClick: function(callback) {
        this.bind('click', function(e) {
            $self = $(this);
            if( $self.hasClass('disabled') ) {
               $('#log').append('<p>click prevented on '+$self.attr('id')+'</p>');
            } 
            else {
               $self.addClass('disabled');
               callback.call(this, [arguments]);
               setTimeout(function() {
                   $self.removeClass('disabled');
               }, 1000);
            }
            return false; 
        });
    } 
});