我的页面上有两个功能。我试图找到一种方法来访问函数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
或事件功能有关。
答案 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;
});
});