1

当调用.before与 DOM 分离的元素时,.end其行为与附加元素不同:

var $div1 = $("div");
console.log($div1.after("foo").end());  // [document]
$div1.detach();
console.log($div1.after("foo").end());  // [<div></div>]

(小提琴:http: //jsfiddle.net/R2uc7/2/

显然,根据附加或分离的节点.before导致不同的行为。.end我看不到逻辑,我不确定我可以依赖什么。

有人可以告诉我.end组合的定义行为.before吗?

4

1 回答 1

1

jQuery v1.7.2用于pushStack构建新的 DOM 元素。

pushStack将项目添加到 jQuery 对象的堆栈中(如图!),并end弹出最后一个,返回堆栈的其余部分(无论剩下什么)。


jQuery v1.7.2 line #5860:
注释我的

before: function() {
    if ( this[0] && this[0].parentNode ) {
        return this.domManip(arguments, false, function( elem ) {
            this.parentNode.insertBefore( elem, this );
        });
    } else if ( arguments.length ) {
        var set = jQuery.clean( arguments );
        set.push.apply( set, this.toArray() ); 
        return this.pushStack( set, "before", arguments ); //pushStack in use
    }
}
于 2012-07-17T17:51:23.267 回答