我一直在努力让它发挥作用,但似乎没有任何帮助。
所以我在图片阵列中都有两张图片。
我想要做的是当你点击下一张图片时,会出现一张。
我很确定问题是indexOf
,因为它每次都返回-1。
如果我换行:
pictures[listIndex+1].show("drop", {direction: "up"}, 1000);
< ---不起作用。
行:
pictures[1].show("drop", {direction: "up"}, 1000);
< ---它有效,但不是很有用。
我希望你明白我的问题是什么,抱歉我的英语不好。我非常感谢你的帮助。
$(document).ready(function(){
var pictures = [$("#link"), $("#italy1")];
pictures[1].hide();
$("#link").click(function(){
var listIndex = pictures.indexOf($(this));
pictures[listIndex+1].show("drop", {direction: "up"}, 1000);
});
$("#italy1").click(function(){
$(this).hide("drop", {direction: "up"}, 1000);
});
});
答案 0 :(得分:2)
那是因为你在jQuery对象中包装元素。即使两个jQuery对象包含相同的元素,它们仍然是两个独立的对象,因此indexOf
方法无法通过查找另一个来找到它们。
将元素本身放在数组中:
var pictures = [$("#link").get(0), $("#italy1").get(0)];
现在您可以使用元素引用来查找数组中的元素。使用$.inArray
方法,因为它也适用于没有Array.indexOf
方法的浏览器:
var listIndex = $.inArray(this, pictures);
当然,当你从数组中获取元素时,需要将它包装在jQuery对象中以使用jQuery方法:
$(pictures[listIndex+1]).show("drop", {direction: "up"}, 1000);
答案 1 :(得分:0)
也许jQuery.inArray可以解决问题。
答案 2 :(得分:0)
如果您想选择下一个$("#link")
,可以随时使用 $(this).next("#link")
。
答案 3 :(得分:0)
支持Guffa,类似FIDDLE。
$(document).ready(function(){
var pictures = [$("#link").get(0), $("#italy1").get(0)];
$(pictures[1]).hide();
$("#link").on('click', function(){
var listIndex = $.inArray(this, pictures);
$(pictures[listIndex+1]).show("drop", {direction: "up"}, 1000);
});
$("#italy1").on('click', function(){
$(this).hide("drop", {direction: "up"}, 1000);
});
});