【发布时间】:2020-09-22 12:54:20
【问题描述】:
我的 HTML 网页上有以下类型的元素。
<div class="form-group>
<div class="car">
<div class="carIventory carDescription" contenteditable="true">This is car # 1</div>
</div>
<div class="tool">
<button>Select me!</button>
</div>
</div>
根据一次显示的汽车数量,有很多。
当我点击按钮Select me! 时,我使用closest() 和find() 来获得最近的<div> 和carDescription 类。
使用以下代码将其写出控制台:
var $element = $(e.target).closest('.form-group').find('.carDescription');
console.log("carDescription ", $element);
产生这个:
jQuery.fn.init [div.carIventory.carDescription, prevObject: jQuery.fn.init(1)]
但如果我改用这段代码:
const $element = document.querySelector('.carDescription');
console.log("carDescription ", $element);
我得到了我想要的格式:
<div class="carIventory carDescription" contenteditable="true">This is car # 1</div>
有没有办法像querySelector() 那样使用closest() 和find() 返回实际的HTML 元素?
谢谢!
【问题讨论】:
-
您可以在 jQuery 中看到数组中的第一项是您的 DOM 元素,因此您可以使用
$element[0] -
在您的 jquery 代码中,
$element是该元素的 jquery 表示,因此您会得到一个 jquery.nf.init。您可以使用 jquery,例如console.log("carDescription ", $element.text());,也可以使用$element[0]将其转换为 DOM 节点,例如console.log("carDescription ", $element[0].innerHTML);- 我个人会坚持使用 jquery(因此“类似”) -
@freedomn-m 谢谢!
text()确实向我显示了<div>的内容,如下所示:This is car # 1。但它并没有像我上面需要的格式那样向我显示实际的 HTML 元素。 -
如果你想要 DOM,为什么要使用 jQuery?
-
那么
$lement[0].outerHTML?
标签: javascript jquery ecmascript-6