当你想得到 HTML对于整个 DOM 元素(包括包装器),您可以执行以下操作(如 here 所述):
$('#myElementId')[0].outerHTML
但是您不能做的是在 $(this)
内部调用 outerHTML
,例如点击监听器或选择器函数主体范围:
$(this).outerHTML //Doesn't complete in IntelliSense, returns undefined in browser
或
$(this)[0].outerHTML //Correction, this DOES work, but it doesn't complete in IntelliSense
因为在这些情况下 IntelliSense 不会显示 innerHTML
或 outerHTML
,尽管使用 vanilla JavaScript 您可以:
document.getElementById($(this).attr('id')).outerHTML
那么……这是怎么回事?
最佳答案
outerHTML
是 DOM 属性; jQuery 不会公开所有 DOM 属性。
如果你有一个 jQuery 对象,你只能直接访问那些 jQuery 公开的属性和方法,反之亦然 DOM 对象。
在面向对象的术语中,jQuery 对象不是从 DOM 对象继承,而是包含它们。
说 $x[0]
获取由 jQuery 对象表示的第一个元素的 DOM 对象。
关于javascript - 为什么不能在 $(this) 上调用 outerHTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30661134/