首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问变量javascript/jquery

访问变量javascript/jquery
EN

Stack Overflow用户
提问于 2010-12-17 20:58:30
回答 4查看 771关注 0票数 0

我有以下代码

代码语言:javascript
复制
$('#first').click(function() {
    myVar = $(this).next().val();
});

$('#second').blur(function() {
    console.log(myVar);
});

如何在#秒内访问myVar?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-17 21:00:18

这取决于代码的更广泛的上下文。您可以这样做:

代码语言:javascript
复制
(function() {
    var myVar;

    $('#first').click(function() {
        myVar = $(this).next().val();
    });

    $('#second').blur(function() {
        console.log(myVar);
    });
})();

这会创建一个匿名函数并立即调用它。匿名函数的目的是在不使myVar成为全局变量的情况下为myVar提供容器。通常最好避免使用全局变量(尤其是因为它们变成了window对象的属性,这个对象已经有各种各样的垃圾了)。具体地说,分配给clickblur事件的函数将成为匿名函数调用内部数据的闭包。他们可以访问myVar,但其他用户无法访问。More here

如果您的代码已经在一个包含作用域中,或者您不关心添加到全局名称空间,则不需要匿名函数。

票数 5
EN

Stack Overflow用户

发布于 2010-12-17 21:00:03

在外部作用域中定义myVar:

代码语言:javascript
复制
var myVar;

$('#first').click(function() {
    myVar = $(this).next().val();
});

$('#second').blur(function() {
    console.log(myVar);
});
票数 2
EN

Stack Overflow用户

发布于 2010-12-17 21:04:21

T.J.克劳德的回答满足了你的要求。这只是一种替代方法(使用jQuery data storage方法):

代码语言:javascript
复制
$('#first').click(function() {
    // Assign this element to have data with the key 'myVar'
    $(this).data('myVar', $(this).next().val());
});

$('#second').blur(function() {
    // Read the data from the other element
    console.log($('#first').data('myVar'));
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4470656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档