是否有用于在另一个元素之前插入 HTML 的纯 JavaScript 函数?在 jQuery 中可以这样完成:
$("#my_id").before('<span class="asterisk">*</span>');
如果没有任何等效的 JavaScript 函数,我该如何实现所描述的功能?
是否有用于在另一个元素之前插入 HTML 的纯 JavaScript 函数?在 jQuery 中可以这样完成:
$("#my_id").before('<span class="asterisk">*</span>');
如果没有任何等效的 JavaScript 函数,我该如何实现所描述的功能?
一个鲜为人知的方法是element.insertAdjacentHTML
. 使用这种方法(所有主流浏览器都支持,包括IE 4),您可以获取任意 HTML 字符串,并将其插入文档中的任何位置。
为了说明该方法的强大功能,让我们使用您的示例...:
$("#my_id").before('<span class="asterisk">*</span>');
变成
document.getElementById('my_id').insertAdjacentHTML('beforebegin',
'<span class="asterisk">*</span>');
insertAdjacentHTML
的第一个参数确定插入位置。这是与 jQuery 的比较:
$().before
-'beforebegin'
$().prepend
-'afterbegin'
$().append
-'beforeend'
$().insertAfter
-'afterend'
如您所见,它非常易于使用。假设 jQuery 选择器只返回一个元素,一般情况下可以使用document.querySelector
,但在这种特定情况下,使用document.getElementById
效率更高。
编辑:我更喜欢@Rob W 的答案,并认为这应该是公认的答案,而不是这个答案。
这将做你想做的事,而不需要像 jQuery 这样的臃肿库的支持。
var my_elem = document.getElementById('my_id');
var span = document.createElement('span');
span.innerHTML = '*';
span.className = 'asterisk';
my_elem.parentNode.insertBefore(span, my_elem);
您可以在 javascript 中创建自己的函数,例如,
代码
var id = document.getElementById('my_id');
var s = document.createElement('span');
s.innerHTML = '*';
s.className = 'asterisk';
id.parentNode.insertBefore(s, id);
你可以在like之前创建一个函数,
before: function() {
return this.domManip( arguments, false, function( elem ) {
if ( this.parentNode ) {
this.parentNode.insertBefore( elem, this );
}
});
},