所以我对 jQuery 有点陌生,但我有几个月的经验。我的问题是这样的。
我构建了一个图像滑块,当我单击 NEXT 按钮时,它会循环div
播放并动画“从右向左滑动”的照片。但是,当我单击上一个按钮时,我的问题是将其更改为“从左向右滑动”。
在我的代码中,我尝试将我的动画 margin-left.fadeOut语句移动到if btn has class next条件中,并用.queue(function)
,和其他一些条件替换它,但似乎没有任何效果,我不能让它打开最上面一行,因为它影响了我想要在我的下一个按钮运行的相反方向工作的前一个条件。.css(function)
.animate(function)
几个星期以来,我一直非常坚持这一点,并且我一直回到这一点,它已经成功了一半。任何人都可以引导我朝着正确的方向前进。我难住了。
这是我到目前为止所拥有的。
<body>
<section class="photos">
<div class="slider">
<div class="photo">
<img src="images/photoOne.png">
</div>
<div class="photo hidden">
<img src="images/photoTwo.png">
</div>
<div class="photo hidden">
<img src="images/photoThree.png">
</div>
</div>
<div class="buttons">
<a href="#" class="btn prev">Previous</a>
<a href="#" class="btn next">Next</a>
</div>
</section>
</body>
<script src="jquery-1.9.1.js"></script>
<script>
var activePhoto = 0;
$('.btn').click(function() {
var $btn = $(this);
$photoBox.eq(activePhoto).animate({
"margin-left": "-=744px"}, "fast").fadeOut(function () {
if ($btn.hasClass('next')) {
if (activePhoto == $photoBox.length - 1) {
activePhoto = 0;
} else {
activePhoto++;
}
$photoBox.eq(activePhoto - 1).css({
"margin-left": "+=744px"
});
$photoBox.eq(activePhoto).css({
"margin-left": "+=744px"
});
$photoBox.eq(activePhoto).fadeIn().animate({
"margin-left": "-=744px"
}, "fast");
} else if ($btn.hasClass('prev')) {
if (activePhoto == 0) {
activePhoto = $photoBox.length - 1;
} else {
activePhoto--;
}
}
});
});
</script>
正如我所说,当我单击下一步时它可以正常工作,但是当我单击上一个时让它做相反的事情会给我带来问题。如果这是有道理的,这就是我试图用我的 jQuery 做的事情。
<script>
var activePhoto = 0;
$('.btn').click(function() {
var $btn = $(this);
$photoBox.eq(activePhoto).queue(function () {
if ($btn.hasClass('next')) {
if (activePhoto == $photoBox.length - 1) {
activePhoto = 0;
} else {
activePhoto++;
}
$photoBox.eq(activePhoto - 1).animate({
"margin-left": "-=744px"}, "fast").fadeOut();
$photoBox.eq(activePhoto - 1).css({"margin-left": "+=744px"});
$photoBox.eq(activePhoto).css({"margin-left": "+=744px"});
$photoBox.eq(activePhoto).fadeIn().animate({"margin-left": "-=744px"}, "fast");
} else if ($btn.hasClass('prev')) {
if (activePhoto == 0) {
activePhoto = $photoBox.length - 1;
} else {
activePhoto--;
}
$photoBox.eq(activePhoto + 1).animate({"margin-left": "+=744px"}, "fast").fadeOut();
$photoBox.eq(activePhoto + 1).css({"margin-left": "-=744px"});
$photoBox.eq(activePhoto).css({"margin-left": "-=744px"});
$photoBox.eq(activePhoto).fadeIn().animate({"margin-left": "+=744px"}, "fast");
}
});
});
</script>
我希望这是有道理的 :)
这是我的示例中的两个 jsfiddles。也许这会为你说明我的问题。第一个是它当前如何使用下一个按钮和从右向左滑动的图像。第二个是我正在尝试做的,与前一个按钮的动画相反,图像滑出到标题的右侧,随后的图像在标题的左侧淡入,然后滑入标题上方。在第二个示例中,上一个按钮和下一个按钮都不能正常工作。