Javascript 使用JQuery导航无根dom

Javascript 使用JQuery导航无根dom,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,给定此html字符串: var string = "<div></div><p></p>"; 是否有机会使用选择器指向其中一个标签?当然,不需要将其全部嵌入新创建的一个 dom.find("p");// [] 如果没有根元素,则需要使用filter()获取顶级元素: var string=“”; var$dom=$(字符串).appendTo('body');//appendTo()仅用于本演示的目的 $dom.filter(“p”).tex

给定此html字符串:

var string = "<div></div><p></p>";
是否有机会使用选择器指向其中一个标签?当然,不需要将其全部嵌入新创建的一个

dom.find("p");// []

如果没有根元素,则需要使用
filter()
获取顶级元素:

var string=“

”; var$dom=$(字符串).appendTo('body');//appendTo()仅用于本演示的目的 $dom.filter(“p”).text('helloworld!')
.find
查看元素内部。在您的例子中,尽管您正在创建一个
div
和一个相邻的段落。将段落移动到
div
中,代码就会生效

或者您可以将这两个元素包装到第三个父元素中

var string = "<div><p></p></div>";

var dom = $(string);

console.log(dom.find("p"));
var string=“

”; var dom=$(字符串); console.log(dom.find(“p”);
var html=“

”; var parser=新的DOMParser(); var dom=$(parser.parseFromString(html,“text/html”); //使用dom dom.find(“p”);

解析器将创建一个html文档(不附加到文档中)。

处理可能包含任何内容的html代码段的更简单方法是使用临时父节点,然后使用/提取其子节点

var $root = $('<div></div>').append(yourHtml);
$root.find('p').addClass('foo');// or whatever
$('.bar').append($root.contents());// put filtered content in your DOM; or
var filteredHtml = $root.html();// get it back to a string of markup
var$root=$('').append(你的HTML);
$root.find('p').addClass('foo');//或者别的什么
$('.bar').append($root.contents());//将过滤后的内容放入DOM中;或
var filteredHtml=$root.html();//将其返回到一个标记字符串

现在,代码与内容的耦合更少,更灵活,因为您不必提前知道是否需要使用
filter()
find()
或两者兼用。

当然。当您有一个项目列表时,您通常希望将其筛选到所需的一个或多个项目。:“获取当前匹配元素集中每个元素的后代,由选择器、jQuery对象或元素进行筛选。”vs.:“将匹配元素集减少到与选择器匹配或通过函数测试的元素集。”我想html有它的用途,但是你的解决方案在遍历DOM时会起作用,但是他正在使用。查找,这样他就可以知道它的作用了。Rory已经覆盖了,过滤以防op想要的。
var html = "<div></div><p></p>";
var parser = new DOMParser();
var dom = $(parser.parseFromString(html, "text/html"));

//work with dom
dom.find("p");
var $root = $('<div></div>').append(yourHtml);
$root.find('p').addClass('foo');// or whatever
$('.bar').append($root.contents());// put filtered content in your DOM; or
var filteredHtml = $root.html();// get it back to a string of markup