我有一个简单的图像滑块,可以通过ul旋转并逐个显示每个li。最近,它开始显示两个图像而不是一个。它以(有5“li”)的模式显示图像:无& 1,1和2,2和3,3和4,4和5,然后是1& 5,然后是1& 2,2& 5。 3,依此类推。我在我的网站页脚中有一个示例:http://kunkelwe.kodingen.com/Site/?page_id=25/
我的代码是:
function fadingSlider(currentListItem, startListItem, fadeInDuration, displayDuration, fadeOutDuration) {
if(!currentListItem) {
startListItem.fadeIn(fadeInDuration).delay(displayDuration).fadeOut(fadeOutDuration, function() {
fadingSlider(startListItem, startListItem, fadeInDuration, displayDuration, fadeOutDuration);
}); //#webmaster fade in, fade out, then recurse with start
return;
}
else {
currentListItem = currentListItem.next("li");
if ((currentListItem.get(0)) === (currentListItem.parent().last("li").get(0))) {
startListItem.fadeIn(fadeInDuration).delay(displayDuration).fadeOut(fadeOutDuration, function() {
fadingSlider(startListItem, startListItem, fadeInDuration, displayDuration, fadeOutDuration);
});
return;
}
else {
currentListItem.fadeIn(fadeInDuration).delay(displayDuration).fadeOut(fadeOutDuration, function() {
fadingSlider(currentListItem, startListItem, fadeInDuration, displayDuration, fadeOutDuration);
});
return;
}
}
}
jQuery(window).load(function() {
fadingSlider(null, jQuery("ul.sponsorSlider > li:first-child"), 300, 5000, 300);
});
编辑:我已经尝试重写脚本,使其更简单并可能消除错误,但遗憾的是错误仍在发生。这是新版本:
function fadingSlider(currentListItem, list, fadeInDuration, displayDuration, fadeOutDuration) {
if(currentListItem){
currentListItem = currentListItem.next("li");
}
if(!currentListItem || currentListItem.length === 0) {
currentListItem=list.children("li:first-child");
}
currentListItem.fadeIn(fadeInDuration).delay(displayDuration).fadeOut(fadeOutDuration, function() {
fadingSlider(currentListItem, list, fadeInDuration, displayDuration, fadeOutDuration);
});
return;
}
jQuery(window).load(function() {
fadingSlider(null, jQuery("ul.sponsorSlider"), 300, 5000, 300);
});
并且html是这样的:
<section class="sponsors">
<h1>Sponsors</h1>
<ul class="sponsorSlider">
<li><a href=""><img src="/Standard/Images/SponsorLogos/aftonChemicalLogo.jpg" alt="" /></a></li>
<li><a href=""><img src="/Standard/Images/SponsorLogos/dupontLogo.jpg" alt="" /></a></li>
<li><a href=""><img src="/Standard/Images/SponsorLogos/flexicellLogo.jpg" alt="" /></a></li>
<li><a href=""><img src="/Standard/Images/SponsorLogos/cFSauerLogo.jpg" alt="" /></a></li>
<li><a href=""><img src="/Standard/Images/SponsorLogos/mWVLogo.jpg" alt="" /></a></li>
</ul>
</section>
编辑:奇怪的是,我已经使用jQuery(window).load()
追踪了这个问题。出于某种原因,这个事件发生了两次。我把它改成了window.onload,这个东西就像一个魅力。我认为这是jQuery的一个错误,但它看起来很奇怪。
答案 0 :(得分:0)
我在你的剧本中看到'sponsor.js:'
startListItem.fadeIn(fadeInDuration).delay(displayDuration).fadeOut(fadeOutDuration, function() {
fadingSlider(startListItem, startListItem, fadeInDuration, displayDuration, fadeOutDuration);
...在第二行中,您将startListItem
传递两次,作为下一次迭代的currentListItem
和 startListItem
。 (这在您的代码中会发生两次。)
请改为尝试:
startListItem.fadeIn(fadeInDuration).delay(displayDuration).fadeOut(fadeOutDuration, function() {
fadingSlider(startListItem, startListItem.next(), fadeInDuration, displayDuration, fadeOutDuration);
答案 1 :(得分:0)
尝试将currentListItem添加到第一个参数中,如:
...
currentListItem = currentListItem.next("li");
if ((currentListItem.get(0)) === (currentListItem.parent().last("li").get(0))) {
startListItem.fadeIn(fadeInDuration).delay(displayDuration).fadeOut(fadeOutDuration, function() {
fadingSlider(currentListItem, startListItem, fadeInDuration, displayDuration, fadeOutDuration);
...
编辑:
您可能需要将旧的currentListItem设置为startListItem,如:
startListItem = currentListItem;
currentListItem = currentListItem.next("li");
ALSO:
为什么你有href =“”作为img的属性?
答案 2 :(得分:0)
答案 3 :(得分:0)
问题在于jQuery(window).load()。出于某种原因,这个事件发射两次。使用window.onload来修复问题。