这是我第一次发布Stack Overflow,这是因为我过去一直在为这个问题撕掉我的头发。
我对jQuery很陌生并对事情的运作方式有了基本的了解,但我真的很难让函数在处理后重新启动。这是一个简单的if / else函数,它通过一系列五个图像来查看它们是否可见。
如果图像可见(换句话说,图库中的当前图像),则下一个和上一个按钮将控制下一个要淡入的图像,然后逐渐淡出上一个图像。
我有下一个/上一个链接适用于第一个图像,但是一旦第二个图像淡入,我就无法使它工作。我猜这是因为我需要回忆一下脚本来检查是否/否则图像是可见的。我的问题是我不知道在哪里放置代码。我已经在各个地方尝试了代码,我一直在研究jQuery延迟和回调,看看我是否可以尝试找出时间是否正常工作等等。但我无法解决它!
如果有人可以帮助实现这项工作,或者甚至提出一种我不知道的更简单的创造方法,我将非常感激!
图像只是在div中列出:
<div class="images">
<img class="image gallery-img" id="1" src="/images/01.jpg" />
<img class="image gallery-img" id="2" src="/images/02.jpg" />
<img class="image gallery-img" id="3" src="/images/03.jpg" />
<img class="image gallery-img" id="4" src="/images/04.jpg" />
<img class="image gallery-img" id="5" src="/images/05.jpg" />
</div>
<div class="gallery-controls">
<a class="gallery-button" id="previous" href="#previous">Previous</a>
<a class="gallery-button" id="next" href="#next">Next</a>
</div>
jQuery是:
window.addEventListener( 'DOMContentLoaded', function(){
function galleryLoop(){
if( $('div.images img:nth-child(1)').css({ 'display' : 'inline' }) ){
//#NEXT CLICK
$('a.gallery-button#next').bind('click', function(){
$('div.images img:nth-child(1)').fadeOut( '100' , function(){
$('div.images img:nth-child(2)').fadeIn();
});//END FADE OUT
}); //END #NEXT CLICK
//#PREVIOUS CLICK
$('a.gallery-button#previous').bind('click', function(){
$('div.images img:nth-child(1)').fadeOut( '100' , function(){
$('div.images img:nth-child(5)').fadeIn();
});//END FADE OUT
}); //END #PREVIOUS CLICK
} //END IF
else if( $('div.images img:nth-child(2)').css({ 'display' : 'inline' }) ){
//#NEXT CLICK
$('a.gallery-button#next').bind('click', function(){
$('div.images img:nth-child(2)').fadeOut( '100' , function(){
$('div.images img:nth-child(3)').fadeIn();
});//END FADE OUT
}); //END #NEXT CLICK
//#PREVIOUS CLICK
$('a.gallery-button#previous').bind('click', function(){
$('div.images img:nth-child(2)').fadeOut( '100' , function(){
$('div.images img:first-child').fadeIn();
});//END FADE OUT
}); //END #PREVIOUS CLICK
}; //END IF
};
galleryLoop();
}); // END SCRIPT
答案 0 :(得分:0)
将该功能从事件监听器中取出,您随时都可以调用它。
答案 1 :(得分:0)
好的,我花了很多时间在这上面,所以我希望它能解决你的问题!
以下是JSFiddle的链接:http://jsfiddle.net/ekUvj/22/
你想要做的就是将你的javascript更改为:
var imgNum = 1;
$("#1").fadeIn(300);
function prev () {
newImageNum=(imgNum == 1)?5:imgNum-1;
$("#".concat(imgNum)).fadeOut(300, function () {$("#".concat(newImageNum)).fadeIn(300);});
imgNum = newImageNum;
}
function next () {
newImageNum=(imgNum == 5)?1:imgNum+1;
$("#".concat(imgNum)).fadeOut(300, function () {$("#".concat(newImageNum)).fadeIn(300);});
imgNum = newImageNum;
}
然后确保按钮调用函数:
<div class="gallery-controls">
<button onclick="prev()">Previous</a>
<button onclick="next()">Next</a>
</div>
然后确保您的图像首先隐藏在CSS中:
.gallery-img {
display: none;
}