javascript - 为什么不能在 $(this) 上调用 outerHTML?

标签 javascript jquery visual-studio-2013 intellisense javascript-intellisense

当你想得到 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 不会显示 innerHTMLouterHTML,尽管使用 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/

相关文章:

c++ - 如何找到我的 C++ 应用程序正在使用的 header ?

javascript - 如何使用正则表达式完全忽略该行? (前瞻不起作用)

javascript - 使用 D3 嵌套函数忽略组

javascript - 如何从另一个对象中提取对象?

jquery - 选择任一选择框后重置其他选择框

jquery - 如何在某个日期范围内删除元素

windows-phone-8 - 在Release模式下构建nuget包?

javascript - 如何从数据库获取时间后开始倒计时?

javascript - 如何传递元素onclick?

c++ - 错误 : unresolved external symbol _main referenced in function ___tmaincrtstartup