各位早安。我正在制作的一个简单的 jQuery 画廊有问题。它允许用户通过一些按钮循环浏览一组图像,同时在计时器上旋转这些图像。我的问题是用户可以多次单击按钮,这会排队淡入动画并一遍又一遍地重复,例如用户单击按钮 5 次 > 相同的图像淡入/淡出 5 次 > 画廊移动到下一个图像。
我试过使用:
$('#homeGalleryImage li a').unbind('click');
触发 click 事件然后重新绑定后:
$('#homeGalleryImage li a').bind('click');
完成后,但这只是在按下按钮一次后删除点击事件并且永远不会重新绑定它?
我还尝试通过以下方式禁用该按钮:
$('#homeGalleryImage li a').attr('disabled', true);
无济于事……?
还有一个次要问题,如果您在图像过渡时设法单击按钮,下一个图像会出现“褪色”,就好像不透明度已降低一样?很奇怪......这是按钮点击的代码:
var i = 1;
var timerVal = 3000;
$(function () {
$("#homeGalleryControls li a").click(function () {
var image = $(this).data('image');
$('#galleryImage').fadeOut(0, function () {
$('#galleryImage').attr("src", image);
});
$('#galleryImage').fadeIn('slow');
$('.galleryButton').attr("src", "/Content/Images/Design/btn_default.gif");
$(this).find('img').attr("src", "/Content/Images/Design/btn_checked.gif");
i = $(this).data('index') + 1;
if (i == 4) {
i = 0;
}
timerVal = 0;
});
});
这是在计时器上循环显示图像的代码:
//Cycle through gallery images on a timer
window.setInterval(swapImage, timerVal);
function swapImage() {
$('#galleryImage').fadeOut(0, function () {
var imgArray = ["/Content/Images/Design/gallery placeholder.jpg", "/Content/Images/Design/1.jpg", "/Content/Images/Design/2.jpg", "/Content/Images/Design/3.jpg"];
var image = imgArray[i];
i++;
if (i == 4) {
i = 0;
}
$('#galleryImage').attr("src", image);
$('#galleryImage').fadeIn('slow');
});
var currentButton = $('#homeGalleryControls li a img').get(i - 1);
$('.galleryButton').attr("src", "/Content/Images/Design/btn_default.gif");
$(currentButton).attr("src", "/Content/Images/Design/btn_checked.gif");
}
我意识到使用插件可能是一个更好的主意,但我对 jQuery 很陌生,我想学习一些东西而不是使用一些现成的代码。
非常感谢任何帮助。
谢谢