首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在匿名函数外部使用变量

在匿名函数外部使用变量
EN

Stack Overflow用户
提问于 2013-06-27 22:39:50
回答 1查看 156关注 0票数 0

我尝试了我在这里找到的所有解决方案,但没有一个对我有效。

代码语言:javascript
运行
复制
var img = $("#img");
var width, height;
$("<img/>")
    .attr("src", $(img).attr("src"))
    .load(function() {
        width = this.width;
        height = this.height;
                alert(width + "*" + height) ; // works
    });
alert(width + "*" + height) ; // undifined*undifined !! :(

如你所见,我需要在外面使用高度和宽度...

我重复一遍:我尝试了StackOverFlow的6-7个解决方案!也许我做得不好..。不管怎么说,它们都不起作用。

我该怎么做?Tnx。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-27 22:46:22

你可以将一个对象传递给你的匿名回调函数,并在回调函数中设置属性,这些属性将在回调函数外部被“看到”:

代码语言:javascript
运行
复制
var img = $("#img");
var dimensions = { width: 0, height: 0 };

$("<img/>")
    .attr("src", $(img).attr("src"))
    .load(function(dimensions) {
        dimensions.width = this.width;
        dimensions.height = this.height;
        alert(dimensions.width + "*" + dimensions.height);
});

// Some time later, after callback has definitely fired...
alert(dimensions.width + "*" + dimensions.height);

但正如@apsillers所说,第二个警告不会按原样工作,因为它是在匿名函数被调用之前执行的。记住,jQuery的load()函数所做的一切就是接受一个匿名函数定义作为它的参数,并记住它以便以后使用。这完全取决于jQuery是否以及何时调用该函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17346177

复制
相关文章

相似问题

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