首页 > 解决方案 > 上下文 jQuery 选择器没有找到一些元素,为什么?

问题描述

如果我按照文档context中的描述正确理解了参数,则以下是预期的两个项目的集合:p

const text = "<body><div class='a'> <p>Test</p> <p>Test 2</p> </div></body>";
const p = $("p", text);

但是为什么以下都没有返回结果呢?

const d = $("div", text);
const b = $("body", text);

JS小提琴

标签: jquery

解决方案


如果您查看从 创建的 jQuery 对象的 outerHTML text,您会看到该body元素已被删除。这是因为您不能body使用 jQuery 附加元素。一个应该已经存在于 DOM 中,并且您不能附加另一个。

因此,在jQuery 对象body中找不到任何元素。text这是一个演示:

const text = $("<body><div class='a'> <p>Test</p> <p>Test 2</p> </div></body>");
console.log(text[0].outerHTML) // no body!
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

正如您在上面的输出中看到的,divthen 成为 jQuery 对象的根元素。

从那里你有效地然后执行$('div').find('div')- 即。试图在包含它的元素中查找元素。因此没有返回任何内容。


推荐阅读