【发布时间】:2012-04-25 14:58:08
【问题描述】:
JQuery 的标准 DOM 等价物是什么
element.append("<ul><li><a href='url'></li></ul>")?
【问题讨论】:
-
它必须是你要附加的字符串吗?
标签: javascript jquery dom
JQuery 的标准 DOM 等价物是什么
element.append("<ul><li><a href='url'></li></ul>")?
【问题讨论】:
标签: javascript jquery dom
我认为你必须扩展 innerHTML 属性才能做到这一点
element[0].innerHTML += "<ul><li><a href='url'></a></li></ul>";
一些解释:
element 是一个集合</a>,因为某些浏览器只允许将有效的html设置为innerHTML提示:
正如@dontdownvoteme 提到的,这当然只会针对集合element 的第一个节点。但由于 jQuery 的性质,该集合可以包含更多条目
【讨论】:
element 需要是 jQuery 集合
element 是什么?也许一个小代码块会有所帮助??
在纯 JavaScript 中复制 JQuery 追加方法的正确和最简单的方法是使用“insertAdjacentHTML”
var this_div = document.getElementById('your_element_id');
this_div.insertAdjacentHTML('beforeend','<b>Any Content</b>');
更多信息 - MDN insertAdjacentHTML
【讨论】:
使用 DOM 操作,而不是 HTML:
let element = document.getElementById('element');
let list = element.appendChild(document.createElement('ul'));
let item = list.appendChild(document.createElement('li'));
let link = item.appendChild(document.createElement('a'));
link.href = 'https://example.com/';
link.textContent = 'Hello, world';
<div id="element"></div>
这具有不重新创建现有内容的节点的重要优势,例如,这将删除附加到它们的任何事件侦听器。
【讨论】:
element[0].appendChild(list);
来自 jQuery 源代码:
append: function() {
return this.domManip(arguments, true, function( elem ) {
if ( this.nodeType === 1 ) {
this.appendChild( elem ); //<====
}
});
},
请注意,为了使其工作,您需要从字符串构造 DOM 元素,这是使用 jQuery domManip 函数完成的。
jQuery 1.7.2 source code
【讨论】:
domManip 很重要。
domManip 是一个 jQuery 函数,而不是原生 javascript 函数。你可以在source code看到它。
element.innerHTML += "<ul><li><a href='url'></li></ul>";
【讨论】: