2013-02-25 54 views
0

我在这里真的很挣扎。我正在使用漂亮的evenIfHidden插件,它在jQuery函数中工作正常,该函数需要一个回调,正确返回宽度或高度值。但是,如果我只是想分配这个值,我得到一个jQuery对象,真烦人。指定一个回调返回值给一个变量

这完美的作品:

$(this).text($(this).evenIfHidden(function(e) { 
             return e.width(); 
            }) 
); 

这不:

var width = $(this).evenIfHidden(function(e) { 
             return e.width(); 
           }); 

()来width不是指定e.width它分配jQuery对象,这不是我想要的。

回答

3

该插件不返回任何东西,声明一个局部变量,它将通过闭包在回调中分配。

var width = ""; 
$(this).evenIfHidden(function(e){ 
    width = e.width(); 
}); 
+0

你肯定'evenIfHidden'同步工作? – Hubro 2013-02-25 10:00:34

+1

它的工作!非常感谢! JavaScript真的以神秘的方式工作...所以,我不应该在函数中返回,而应该分配,这是多么的整洁。 – silkfire 2013-02-25 10:06:29

+0

@silkfire很高兴我能帮忙,很高兴听到它的工作! – 2013-02-25 10:07:09

2

这是不可能的。如果evenIfHidden函数没有返回值,那么可以做的事情就不多了。相反,您应该在回调中使用此值,因为这是此值可用的唯一位置。你不应该试图在外面流动它。因此,举例来说,如果你想用这个宽度执行,而不是试图把它作为返回值的evenIfHidden功能,你可以使用它的回调里面的一些动作,:

$(this).text(
    $(this).evenIfHidden(function(e) { 
     var width = e.width(); 
     // do something with the width here, for example you could pass it to some other function 
     someFunction(width); 
     return width; 
    }) 
); 
相关问题