假设我会有这样的调用链:
var btn = $('#mybtn');
btn.addClass('is-active').text(btn.attr('data-alt-active'));
很明显addClass
之前会被调用,text
但是什么时候被btn.attr
调用呢?就在text
调用之前还是在整个链之前?
假设我会有这样的调用链:
var btn = $('#mybtn');
btn.addClass('is-active').text(btn.attr('data-alt-active'));
很明显addClass
之前会被调用,text
但是什么时候被btn.attr
调用呢?就在text
调用之前还是在整个链之前?
运行这个:
<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;博士; 在链式方法调用中调用的函数将在链式方法被调用之前被调用。