gpt4 book ai didi

javascript - 防止 'click' 事件多次触发 + 褪色问题

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:40 24 4
gpt4 key购买 nike

各位早安。对我正在制作的简单 jQuery 画廊有疑问。它允许用户通过一些按钮循环浏览一组图像,同时在计时器上轮流浏览这些图像。我的问题是用户可以多次单击按钮,这会使动画淡入淡出并一遍又一遍地重复,例如用户点击按钮 5 次 > 同一张图片淡入/淡出 5 次 > 图库移动到下一张图片。

我试过使用:

$('#homeGalleryImage li a').unbind('click');

点击事件触发后重新绑定(bind):

$('#homeGalleryImage li a').bind('click');

完成后,但这只是在按下按钮一次后删除了点击事件,并且永远不会重新绑定(bind)到它?

我还尝试通过以下方式禁用按钮:

$('#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 的新手,我想学习一些东西而不是使用一些现成的代码。

非常感谢任何帮助。

谢谢

最佳答案

您总是可以尝试向元素添加一些东西来取消点击事件吗?

例如

$(".element").click(function(e) {

if ( $(this).hasClass("unclickable") ) {
e.preventDefault();
} else {

$(this).addClass("unclickable");
//Your code continues here
//Remember to remove the unclickable class when you want it to run again.

}

}):

在您的情况下,您可以尝试对点击添加检查。

$('#homeGalleryImage li a').attr('data-disabled', "disabled");

然后在你的点击事件中

if ( $(this).attr("data-disabled" == "disabled") {
e.preventDefault();
} else {
//Ready to go here
}

编辑

这是一个工作示例,显示元素变得不可点击。 http://jsfiddle.net/FmyFS/2/

关于javascript - 防止 'click' 事件多次触发 + 褪色问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11556571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com