2013-08-25 29 views
7

我有这个非常简单的幻灯片在这里:fiddle
的Jquery代码:jQuery的 - 幻灯片按钮的功能代码

$("#slideshow > div:gt(0)").hide(); 

var maxindex = $('#slideshow > div').length; 

var index = 0 
var interval = 3 * 1000; // 3 seconds 
var timerJob = setInterval(traverseSlideShow, interval); 

function traverseSlideShow() { 
    console.log("current index: " + index); 

    $('#slideshow > div') 
     .stop() 
     .fadeOut(1000); 
    $('#slideshow > div').eq(index) 
     .stop() 
     .fadeIn(1000); 

    $('ul li').removeClass('active'); 
    $('ul li:eq(' + index + ')').addClass('active'); 
    index = (index < maxindex - 1) ? index + 1 : 0; 

} 

for (var i = 0; i < maxindex; i++) { 
    $('ul').append('<li class="' + (i == 0 ? 'active' : '') + '"></li>'); 
} 

$(document).on('click', 'ul li', function() { 
    index = $(this).index(); 
    traverseSlideShow(); 
    clearInterval(timerJob); 
    timerJob = setInterval(traverseSlideShow, interval); 
}); 

正如你可以看到有三个按钮,在点击任何按钮,幻灯片自动进入照片相关与按钮点击,你可以(通过3秒后点击)看到这个按钮的样式更改。
我有一个问题,这个代码,我试图修复。
嗯,我正在试图防止点击任何按钮一秒钟任何按钮的样式更改后,简单的,如果你点击任何按钮,你不能再点击1次,内的另一个按钮为好,如果幻灯片自动加载照片,您无法在1秒内点击任何其他照片加载任何其他照片。

回答

5

我会为CSS类添加一个标志,按钮:

工作小提琴:http://jsfiddle.net/b_m_h/Jtec5/86/

的标志是一个.enable css类,只有li.enable是点击。

该事件仅监听clickul li.enable

... 
$(document).on('click', 'ul li.enable', function() { 
... 

起初,所有的按钮必须可以点击,所以加.enable类所有li

for (var i = 0; i < maxindex; i++) { 
    $('ul').append('<li class="' + (i == 0 ? 'active' : '') + ' enable"></li>'); 
} 

并添加机制来禁止

:之后在 traverseSlideShow() 1秒 li按钮并重新使能它
function traverseSlideShow() { 
    ... 
    $('ul li').removeClass('enable'); 
    setTimeout(function(){ 
     $('ul li').addClass('enable'); 
    }, 1000); 
} 
+0

完美的代码,100%的作品,我会尽可能快地给50声望。非常感谢你 –

+0

只需将它添加已添加的代码,或者你改变了整个代码? –

+0

当然,我只更新了代码的更改。并感谢赏金。 :) – BMH

1

使用的setTimeout的功能中b是按钮的ID被推迟

function slow_button(b) { 

    $('#' + b).attr("disabled", true); 
    var t = setTimeout(function(){$('#' + b).removeAttr("disabled")}, 1000); 
} 
+0

我不能让你的代码工作,无论如何,你可以请注意应用在幻灯片的的jsfiddle这里:http://jsfiddle.net/Jtec5/ 33/ –

2

试试这个,

(function(){ 
    $('button').on('click',function(){ 
    var $this=$(this); 
      $this 
       .attr('disabled','disabled'); 
       setTimeout(function() { 
       $this.removeAttr('disabled'); 
       }, 1000); 
      }); 
    })(); 
+0

谢谢您的尝试,但不幸的是,此代码不是100%有用,它确实防止在图片加载时单击按钮1秒,但不会在图片自动加载时**。 –