Javascript中jQuery的.before()函数的等价物是什么?

时间:2014-03-14 13:48:28

标签: javascript jquery equivalent

Javascript中.before()的等效内容是什么?

3 个答案:

答案 0 :(得分:6)

node.insertBefore()几乎相当于:https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore

$('#id').before('something');
//equivalent 
var node = document.getElementById('id');
node.parentNode.insertBefore('something', node);

这是jQuery的作用:https://gist.github.com/kagagnon/a13de27760ba1af883c0#file-gistfile1-js-L6064

before: function() {
    return this.domManip( arguments, function( elem ) {
        if ( this.parentNode ) {
            this.parentNode.insertBefore( elem, this );
        }
    });
}

答案 1 :(得分:2)

您可以在javascript中使用insertBefore

node.insertBefore(newnode, existingchild);

上面的示例将newnode作为节点的子节点直接附加到existingchild节点之前。

答案 2 :(得分:0)

好吧,这些答案有些欺骗。使用node.insertBefore与使用jQuery .before()方法有点不同。

// jQuery
$('.element').before('<span class="class-name">Some text</span>');

// Pure JS
var _$element = document.querySelector('.element');
var _$new = document.createElement('span');
_$new.outerHTML = '<span class="class-name">Some text</span>';
_$element.parentNode.insertBefore(_$new, _$element);

如果您想知道为什么在jQuery snippet

中看起来如此简单
before: function() {
    return this.domManip( arguments, function( elem ) {
        if ( this.parentNode ) {
            this.parentNode.insertBefore( elem, this );
        }
    });
}

请注意,它以this.domManip开头。它是在该函数的幕后工作,将元素创建工作抽象化。