用jquery解析HTML

用jquery解析HTML,jquery,Jquery,假设在变量中html保存为 var vhtm="<div><div id='test'>zebra</div><div id='foo'>here is my many other html content</div></div>"; var vhtm=“zebrahere是我的许多其他html内容”; 我想在jquery的帮助下解析存储在variable中的上述html。 我需要按id提取一个特定的div,并包括它的内

假设在变量中html保存为

var vhtm="<div><div id='test'>zebra</div><div id='foo'>here is my many other html content</div></div>";
var vhtm=“zebrahere是我的许多其他html内容”;
我想在jquery的帮助下解析存储在variable中的上述html。 我需要按id提取一个特定的div,并包括它的内容。返回的结果是

<div id='foo'>here is my many other html content</div>
下面是我的许多其他html内容
所以我需要通过id='foo'找到div


请帮助我如何像jquery一样解析上述内容。

尝试以下方法:

$(vhtml).find('#foo');

我不知道有什么好办法可以做到这一点。我会将其设置为DOM元素(
$(document.createElement('div')).HTML(vhtm).find(“#foo')
)或创建一个
关于:blank
iframe,将HTML添加到其中并使用
$(iframe.contentWindow.document.body)。find(…)
如果出于某种原因需要与正在运行脚本的页面隔离,请尝试以下操作

var divHtml = $(vhtm).find("#foo").html();
这应该做到:

var vhtml=“zebrahere是我的许多其他html内容”;
var foo=$(vhtml).find('#foo').html();
警报(foo);

既然您希望输出包含整个div(包括内容),我建议您使用一些正则表达式:)比如:

var vhtm="<div><div id='test'>zebra</div><div id='foo'>here is my many other html content</div></div>";
var regex = /<div id='foo'>.*?<\/div>/;
alert(vhtm.match(regex));
var vhtm=“zebrahere是我的许多其他html内容”;
var regex=/.*?/;
警报(vhtm.match(正则表达式));
结果:


请注意,
$(document.createElement('div'))
等于
$('')
。它做同样的事情,但它的。你真的因为这个否决了答案?不是因为那个。在这种情况下,解决方案过于复杂。与纯jquery版本相比,差异似乎是25%。不过,这里的性能差异在很大程度上是无关的。它通常与可读性和可维护性有关——两者都是有效的,但我认为,如果您只做一个,那么字符串方法更可取。但是对于js性能证明+1。我有一些类似于
$.c=function(tagName,attrs,text){return$(document.createElement(tagName)).attr(attrs | |{}).text(text | | | |}
(在没有参数时,没有对
attrs()
text()
的无用调用,但做同样的事情)让它更具可读性。我发现这比普通的HTML更可读。我明白你的意思,但如果他没有用一车复杂的代码填充他的代码,我的示例仍然有效;)那个div中的另一个
呢?这不是“一车复杂的代码”,但它仍然会破坏它。
var vhtm="<div><div id='test'>zebra</div><div id='foo'>here is my many other html content</div></div>";
var regex = /<div id='foo'>.*?<\/div>/;
alert(vhtm.match(regex));