感谢您的代码在做什么。在第一个示例中,会发生以下情况:
$('.next').live('click',function(){
$('#slideshow > div:first') //get first div, div1, in slideshow
.fadeOut(0) //fade div1 out
.next() //get the next div, div2
.fadeIn(1000) //fade div2 in
.end() //end
.appendTo('#slideshow'); //append the original div, div1, to the end of the show
}) ;
我看到的一个问题是您不断向幻灯片添加更多图像。这将导致大量的 DOM 元素。我认为你根本不想追加。
无论如何,您的代码在第二种情况下不起作用,因为......
$('.prev').live('click',function(){
$('#slideshow > div:first') //get first div, div1
.fadeOut(0) //fade it out
.prev() //previous is nothing because you already have the first one! This is no doubt why it breaks
.fadeIn(1000)
.end()
.appendTo('#slideshow'); //again you are appending. Seems like a bad idea
}) ;
如果我要这样做,我会改用类。未经测试,但看起来像这样。
<div id="slideshow">
<img.prev>
<img.next>
<div1 class="active">
<div2>
<div3>
</div>
$('.next').live('click',function(){
$('#slideshow > div.active') //get active div
.fadeOut(0) //fade out
.removeClass('active')
.next() //get the next div
.fadeIn(1000) //fade it in
.addClass('active'); //make new div the active one
}) ;
$('.next').live('click',function(){
$('#slideshow > div.active') //get active div
.fadeOut(0) //fade out
.removeClass('active')
.prev() //get the prev div
.fadeIn(1000) //fade it in
.addClass('active'); //make new div the active one
}) ;