jsFiddle在这里:http://jsfiddle.net/qBQD4/
其实很简单我想右箭头向前移动的图像,左箭头向后移动,在一个简单的幻灯片。我有多个幻灯片在页面上运行,这段代码将在其上实现,因此我选择了.next()路径,而不是仅仅指定一个唯一的div id。HTML是:
<div class="media">
<div class="slideButtons">
<span class="prev"><</span>
<span class="next">/ ></span>
</div>
<ul class="gallery" id="olympGallery">
<li><img src="http://i.imgur.com/8aA7W.jpg" alt="" title="" /></li>
<li><img src="http://i.imgur.com/jE7vj.jpg" alt="" title="" /></li>
<li><img src="http://i.imgur.com/L7lVg.jpg" alt="" /></li>
</ul>
</div>
jQuery代码是:
var speed = 100;
$(".prev").click(function() {
var now = $(this).next("ul.gallery").children(":visible"),
last = $(this).next("ul.gallery").children(":last"),
prev = now.prev();
prev = prev.index() == -1 ? last : prev;
now.fadeOut(speed, function() {prev.fadeIn(speed);});
});
$(".next").click(function() {
var now = $(this).next("ul.gallery").children(':visible'),
first = $(this).next("ul.gallery").children(':first'),
next = now.next();
next = next.index() == -1 ? first : next;
now.fadeOut(speed, function() {next.fadeIn(speed);});
});
$(".gallery li").click(function() {
var first = $(this).parent().children(':first'),
next = $(this).next();
next = next.index() == -1 ? first : next;
$(this).fadeOut(speed, function() {next.fadeIn(speed);});
});
最后是一点CSS:
.prev, .next {position: relative; padding: 3px; font-size:50px; font-weight: 900; cursor:pointer;
}
.gallery li{display:none; list-style:none;}
.gallery li:first-child {display:block;}
.gallery img {
max-height:550px
}
第3个功能工作正常(点击图像前进到系列中的下一个)。但是,前两个完全坏了。我做错了什么?
3条答案
按热度按时间kse8i1jr1#
在prev和next函数中,你忘记了在试图找到它的关联库之前提升到点击的div的父级,即:
http://jsfiddle.net/alnitak/qBQD4/1/处的工作样品
FWIW,你也应该把这一步分离到一个单独的变量中,然后找到相关的图像:
2lpgd9682#
当你使用.next(selector)时,你正在寻找下一个匹配选择器的兄弟节点。换句话说,您正在查找DOM树中同一级别的下一个元素。
下面是正确的jsfiddle:http://jsfiddle.net/QALEE/
您只需要使用$(this).parent().next(“ul.gallery“)来选择下一个“ul.gallery”元素。
jhiyze9q3#
写了20分钟。。可能有一些非官方的代码行,但工作正常。JS
HTML
希望这能帮助一些人保存一天。