有人知道我做错了什么吗?我试图改变某些图像显示的顺序,我希望每次按下按钮时图像都会向右/左移动一个点。这就是我尝试但没有运气。
真正感谢任何帮助或见解
$("#rightShift").click(function(){
$("img").hide();
var count = $("img").size();
$("img").each(function(i) {
var indexImg = count - i;
$("img:eq(indexImg)").show();
});
});
$("#leftShift").click(function(){
$("img").hide();
$("img:last").prependTo("img");
$("img").show();
});
答案 0 :(得分:20)
假设你希望这个像旋转木马那样工作(当你向右移动时,最后一张图像成为第一张图像),那么我就是这样做的:
$("#rightShift").click(function(){
$("img:last").detach().insertBefore("img:first");
});
$("#leftShift").click(function(){
$("img:first").detach().insertAfter("img:last");
});
答案 1 :(得分:4)
您正在尝试引用字符串中的变量。这毫无意义。
你的意思是:
$("img:eq(" + indexImg + ")").show();
但更有效的实施是:
$(this).prev().show();
没有副作用的最有效的实施是:
$("#rightShift").click(function(){
var $images = $("img"); // <-- Reference to all images
$images.hide();
//var count = $images.length; //<-- Unused variable, delete it?
$images.each(function(i) {
$(this).prev().show();
});
});
$("#leftShift").click(function() {
var $images = $("img");
$images.hide();
$images.last().prependTo("img"); // OR: $images.before($images.last());
$images.show();
});
答案 2 :(得分:1)
此:
$("img:eq(indexImg)").show();
应该是这样的:
$("img:eq(" + indexImg + ")").show();
不确定其他东西是不是错了。