我在这里有一个非常简单的幻灯片:fiddle
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秒内点击任何其他按钮加载任何其他照片。
答案 0 :(得分:5)
我会在按钮上添加一个标志作为css类:
工作小提琴:http://jsfiddle.net/b_m_h/Jtec5/86/
该标志是.enable
css类,只有li
.enable
可点击。
该事件仅在click
上侦听ul 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>');
}
并添加机制以禁用li
按钮并在traverseSlideShow()
中1秒后重新启用它:
function traverseSlideShow() {
...
$('ul li').removeClass('enable');
setTimeout(function(){
$('ul li').addClass('enable');
}, 1000);
}
答案 1 :(得分:2)
试试这个,
(function(){
$('button').on('click',function(){
var $this=$(this);
$this
.attr('disabled','disabled');
setTimeout(function() {
$this.removeAttr('disabled');
}, 1000);
});
})();
答案 2 :(得分:1)
在函数中使用setTimeout,其中b是要延迟的按钮的id
function slow_button(b) {
$('#' + b).attr("disabled", true);
var t = setTimeout(function(){$('#' + b).removeAttr("disabled")}, 1000);
}