在jquery中传递函数外部的变量

时间:2011-08-23 03:10:04

标签: jquery function global-variables

我想知道是否可以在函数之外传递变量?

$('.selector').hover(function(){
var variable = $('.selector2', this).attr('id');
});

我需要让这个变量在这个悬停函数之外使用它。有可能吗?

谢谢!

编辑------------------------

我正在尝试点击其他在悬停函数之外获取该变量的内容

$('a.btn').click(function(){
alert(variable);
});

3 个答案:

答案 0 :(得分:2)

您希望首先在更高的范围内声明该变量:

var variable;

$('.selector').hover(function(){
    variable = $('.selector2', this).attr('id');
});

答案 1 :(得分:0)

在此之后的下一行代码中?如果我的朋友就是这种情况,你会严重误解整个jQuery的工作原理。

您正在声明回调函数的实际运行代码是什么。此处定义的函数将在未来的某个时间点调用,不受您控制。*

你在这里遇到的另一个问题是你有一个选择器,它可以包含多个dom元素,0到x个数。

如果你需要从一个容易完成的选择器中获取所有Id的列表,请查看.each()或类似的东西,只要知道你正在处理一组控件而不是单一,即使你只是选择一个项目。

* 除非您自己调用该活动

答案 2 :(得分:0)

最简单的方法是在悬停处理程序之前实例化您想要的变量。这是您更新的代码:

var variable = '';
$('.selector').hover(function(){
    variable = $('.selector2', this).attr('id');
});
alert(variable);  // alerts empty string because you haven't hovered over '.selector' yet

问题是您可能在设置变量之前尝试访问变量,因为只有在发生悬停时才会设置变量