将回调返回值分配给变量

时间:2013-02-25 09:56:15

标签: javascript jquery anonymous-function

我真的在这里挣扎。我正在使用漂亮的evenIfHidden插件,它在jQuery函数中工作正常,期望回调,它正确返回宽度或高度值。但是,如果我只想分配该值,我会找回一个jQuery对象,真的很烦人。

这非常有效:

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

这不是:

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

不是将e.width()分配给width,而是分配jQuery对象,这不是我想要的。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分: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;
    })
);