0

私はここで本当に苦労しています。私は気の利いた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 オブジェクトを割り当てますが、これは私が望むものではありません。

4

2 に答える 2

3

プラグインは何も返さず、クロージャーを介してコールバック内で割り当てられるローカル変数を宣言します。

var width = "";
$(this).evenIfHidden(function(e){
    width = e.width();
});
于 2013-02-25T09:58:11.337 に答える
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;
    })
);
于 2013-02-25T09:58:25.577 に答える