0

この一連の呼び出しがあるとしましょう:

var btn = $('#mybtn');
btn.addClass('is-active').text(btn.attr('data-alt-active'));

addClass前に呼び出されることは明らかですtextが、いつbtn.attr呼び出されるのでしょうか。呼び出される直前textですか、それともチェーン全体の前ですか?

4

1 に答える 1

0

これを実行する:

<span id="mybtn" data-alt-active="Alternative text">Hello</span>

function aliasWrap(func, msg) {
    function _wrapped() {
        console.log(msg);
        return func.apply(this, arguments);
    }

    return _wrapped
}

$.fn._addClass = aliasWrap($.fn.addClass, 'addClass called');
$.fn._text = aliasWrap($.fn.text, 'text called');
$.fn._attr = aliasWrap($.fn.attr, 'attr called');

var o = $('#mybtn');

o._addClass('is-active')._text(o._attr('data-alt-active'));

コンソールに次を出力します。

addClass called
attr called
text called

tl;dr; 連鎖メソッド呼び出し内で呼び出される関数は、連鎖メソッドが呼び出される直前に呼び出されます。

于 2013-10-01T15:12:23.307 に答える