返回一个变量以在JQuery中的另一个函数中使用

时间:2013-04-17 13:26:20

标签: javascript jquery scroll global increment

我正在创建一个图库,当我点击一个按钮时,我可以滚动到下一个图像。

我也可以选择“跳转”到特定图像。一切正常。

但是,如果我定期滚动到图像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函数中。但是,当我在常规JavaScript函数中包装JQuery .click时,我的代码似乎不起作用(即my_Function(){.... $(“#something”)。点击....}

有人可以解释我做错了吗?

1 个答案:

答案 0 :(得分:1)

在大多数编程语言中,您有两种选择:

  1. 使用全局变量(更高范围),
  2. 通过引用传递。
  3. 但是,你不能真正地创建某种全局变量(对象或原始),所以我建议你创建一个对象(甚至是键值)来保存你所有的程序参数。

    为了做到这一点,您可以使用像这样的.data方法将数据分配给任意元素:

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

    请参阅:http://api.jquery.com/jQuery.data/

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