Jquery - 从另一个函数中获取变量

时间:2012-03-12 23:56:17

标签: javascript jquery

我的页面上有两个功能。我试图找到一种方法来访问函数2中函数1中的变量:

$(function() {
    $('a[id=1]').live("click", function(event) {
        event.preventDefault();
        var Var1 = "something1";
       });
});

$(function() {
    $('a[id=2]').live("click", function(event) {
        event.preventDefault();
        var Var2 = event.var1;
       });
});

所以我确定我的上述内容不正确但您可以看到函数2中我是如何尝试从第一个函数中获取变量的。

有没有办法可以做到这一点?我不知道为什么,但我一直认为它与event.var1或事件功能有关。

2 个答案:

答案 0 :(得分:18)

您需要在两个函数之外声明变量,在它们都可以访问的范围内。我建议将两个文档就绪处理程序组合成一个函数并在那里声明变量:

$(function() {
    var var1;  // may want to assign a default

    $('a[id=1]').live("click", function(event) {
        event.preventDefault();
        var1 = "something1";
       });

    $('a[id=2]').live("click", function(event) {
        event.preventDefault();
        var var2 = var1;
       });
});

如果您需要从其他地方访问变量,也可以将变量设为全局变量。

请注意,两次点击事件彼此无关,因此它们当然不会共享事件数据。此外,在点击第一个锚点之前可能会点击第二个锚点,因此您可能希望为var1提供默认值和/或测试undefined,以便在第二个单击处理程序中使用它。

(另外我已将Var1更改为var1,因为JS约定是用小写字母启动变量名称 - 您不必遵循约定,但我建议它。)

答案 1 :(得分:3)

每个事件都是每次点击都是唯一的,您可以将结果存储在窗口对象的全局变量中并处理事件的顺序

$(function() {
$('a[id=1]').live("click", function(event) {
    event.preventDefault();
    window.Var1 = "something1";
   });
});

$(function() {
$('a[id=2]').live("click", function(event) {
    event.preventDefault();
    var Var2 = window.Var1;
   });
});