Javascript中.before()的等效内容是什么?
答案 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
开头。它是在该函数的幕后工作,将元素创建工作抽象化。