Jquery 查找HTML字符串中的元素

Jquery 查找HTML字符串中的元素,jquery,html,find,Jquery,Html,Find,是否可以在HTML字符串中而不是从DOM中找到元素?例如 var html = "<div><span class='find-me'></span></div>" $("html").find(".find-me").remove(); var html=“” $(“html”).find(“.find me”).remove(); 确实如此,但它容易出错且不可靠。考虑狡猾的Web设计器在文本段< /代码>中写入类=“FIDE-ME”。 您正

是否可以在HTML字符串中而不是从DOM中找到元素?例如

var html = "<div><span class='find-me'></span></div>"

$("html").find(".find-me").remove();
var html=“”
$(“html”).find(“.find me”).remove();

确实如此,但它容易出错且不可靠。考虑<代码>狡猾的Web设计器在文本段< /代码>中写入类=“FIDE-ME”。
您正在半结构化内容中查找结构信息。为什么你想通过搜索非结构化内容来让你的生活更艰难?

你很接近了,把你的变量包装在
$()

如果要返回字符串,可以执行以下操作:

var htmlString = $('<div>').append($div).html();
var html = "<div><span class='find-me'></span></div>"
html = html.replace("find-me", ""); 
alert(html)
var htmlString=$('').append($div.html();

如果HTML是一个字符串,您可以使用javascript将其视为一个字符串,使用replace函数,例如:

var htmlString = $('<div>').append($div).html();
var html = "<div><span class='find-me'></span></div>"
html = html.replace("find-me", ""); 
alert(html)
var html=“”
html=html.replace(“找到我”和“”);
警报(html)
在这种情况下,替换之后,html将是:

<div><span class=''></span></div>


下面是您可以使用DOMParser()解析字符串的

var html=“”
dom_doc=new DOMParser().parseFromString(html,“text/xml”);
$(dom#u doc).find('#foo').remove();

这是可能的,但对于查找和操作的复杂情况,您实际上是在自己编写HTML解析器。如果您只是在寻找单个id或类,则正则表达式可能会起作用。如果您试图删除一个有子节点的节点,它会变得复杂得多,您还可以查看XML/HTML解析器库。@EricHughes jQuery解析HTML,上面代码段中唯一的“错误”是他使用的是字符串
“HTML”
并匹配html元素,而不是使用他的
html
变量作为jQuery函数的参数。此外,也不需要编写DOM解析器,因为可以使用浏览器解析字符串…@EricHughes一点也不棘手或困难,你是从哪里得到这个想法的?@charlietfl我从表面上看了这个问题,并假设他想使用纯字符串操作,而不是阅读使用jQuery进行操作的意图。我还假设源代码是伪代码,而不是JavaScript。我认为JQuery本身可以被视为一个HTML解析器;-)为什么你说它容易出错而且不可靠?我自己做这件事从来没有一个问题,而且做了很多次times@charlietfl我也这么做了,但没有真正解析html(即,只进行词汇化),这完全是一场噩梦。你不是在作弊吗;-)<代码>$(html)构建dom结构(尽管不在页面的dom树中)。我的印象是,OP只在词汇表示中进行搜索,而没有进行解析。@collapsar我认为你的解释是错误的。您还可以在DOM之外操作html片段,如果需要,可以很容易地将其返回到字符串中。我想在字符串中找到元素,如果它确实存在,请执行一些操作。if($div.find(“.find me”).length){}。但它似乎不起作用。@Shabb将取决于该类是否有祖先,也可以尝试
filter()
如果它在根级别是的,您可以对它使用任何jQuery方法,就像它在DOM中一样。例如,如果有一个输入,并且您希望从中获取值,则可以使用
val()
来获取该值。或者使用
data()
attr()
addClass()
etc这只替换第一次出现的“查找我”。此外,即使使用
replace(/find me/g,”)
也会遇到这样的问题,即html文本节点中的类名也会被替换。我真的不想删除元素,不知道为什么要添加remove。如果HTML字符串中确实存在该元素,我实际上希望运行代码。@Shabb类似的问题。您不知道是否匹配文本节点中的匹配项或开头标记中的匹配项。如果@Shabb仅将其称为字符串(而不是DOM元素),则这将起作用(替换字符串的第一个匹配项)。使用indexof更新小提琴以确定字符串是否存在