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;博士; 在链式方法调用中调用的函数将在链式方法被调用之前被调用。

于 2013-10-01T15:12:23.307 回答