0

我正在制作一个图片库,当我点击一个按钮时,我可以滚动到下一张图片。

我还可以选择“跳转”到特定图像。这一切都很好。

但是,如果我定期滚动到图像 3,然后跳转到图像 7。一旦我单击下一个按钮,我不会像我想的那样转到图像 8 - 我会转到图像 4。因为有两个单独的功能,而且我不能/不知道如何在它们之间传递变量。我知道我可以在两个函数之外使用全局变量,但这似乎不鼓励。

这是一个例子:

var i = 0;
// i is a global variable

$("#next_button").click(function(){
   $(".all_images").eq(i).show();
   i++;
});

这将正确地增加我所有的图像。

$(".thumbnails").click(function(){
    var x = $(this).index();
    $(".all_images:visible").hide();
    $(".all_images").eq(x).show();

i = x;
});

这显示了相对于我单击的缩略图的图像。

那么,如何在第二个函数中使用第一个函数中的“i”变量?这一直让我感到困惑。使用全局变量似乎更简单,因此每个函数都可以更改 i 的值并在必要时使用它。请赐教。

此外,据我了解,可以将 JQuery 代码包装在常规 JavaScript 函数中。但是,当我将 JQuery .click 包装在常规 JavaScript 函数中时,我的代码似乎不起作用(即 my_Function(){ ....$("#something").click.... }

谁能解释我做错了什么?

4

1 回答 1

1

与大多数编程语言一样,您有两种选择:

  1. 使用全局变量(更高范围),
  2. 通过参考。

但是,您不能真正避免创建某种全局变量(对象或原语),因此我建议您创建一个包含所有程序参数的对象(甚至可能是键值)。

为此,您可以使用这样的 .data 方法将数据分配给任意元素:

setter : 
$('body').data('myvar','value');

getter:
$('body').data('myvar');

见:http ://api.jquery.com/jQuery.data/

为了通过引用传递,您需要传递一个对象而不是原始数据。有关详细信息,请参阅以下链接:

于 2013-04-17T13:48:32.353 回答