我是 jQuery 的新手,我有一个问题,我相信对于你们中的一些人来说这将是小菜一碟。 :)
我创建了自定义图像 slider ,除了一件事外,它几乎可以按我希望的方式工作。应该在每个幻灯片转换上出现的效果只有在通过所有幻灯片后才会显示。在此之前,它们会立即显示 - 完全没有效果。
这是 JSFiddle链接和代码片段如下。
$(document).ready(function () {
var slideHovered = null;
var slideDuration = 7000;
var slideEffectDuration = 2500;
//Initial hiding of inactive slides - is it actually necessary?
$('.slide:not(.active)').each(function () {
$(this).css({
"visibility": "hidden"
});
});
//Check if mouse is hovering over slider
setInterval(function () {
slideHovered = $('.leftContentWrapper').is(":hover");
}, 500);
//Function to start slideshow
function startSlides(slideDirection) {
var slideNumber = $('.slide.active').data('slide');
var highestSlideNumber = null;
//Function to find highest slide number
$('.slide').each(function () {
var value = parseFloat($(this).attr('data-slide'));
highestSlideNumber = (value > highestSlideNumber) ? value : highestSlideNumber;
});
slideNumber = slideDirection == 'next' ? slideNumber = slideNumber + 1 : slideNumber = slideNumber - 1;
slideNumber = slideNumber <= 0 ? slideNumber = highestSlideNumber : slideNumber = slideNumber;
slideNumber = slideNumber > highestSlideNumber ? slideNumber = 1 : slideNumber = slideNumber;
$('.slide.active').removeClass('active').hide();
$('[data-slide="' + slideNumber + '"]').addClass('active').fadeIn(slideEffectDuration, function () {});
$('.slide.active').css({
'visibility': 'visible'
});
}
//Function to change slide every x seconds if there is no hovering over
setInterval(function () {
if (slideHovered === false) {
startSlides('next');
} else {
return false;
}
}, slideDuration);
$('.control').click(function () {
var slideDirection = $(this).attr('id');
startSlides(slideDirection);
});
});
附言任何额外的代码建议或建议都将受到赞赏。
最佳答案
你的初始 hide 是问题所在,将其更改为:
$(this).css({
"display": "none"
});
关于javascript - jQuery slider 在第一次加载幻灯片时不显示效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23071037/