使用jquery解析html字符串

前端之家收集整理的这篇文章主要介绍了使用jquery解析html字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图解析这个html通过jQuery获取data1,data2,data3。虽然我得到data2和data3我无法获得data3与我的方法。我对jQuery相当新,所以请原谅我的无知。
<html>
<body>
   <div class="class0">
    <h4>data1</h4>
    <p class="class1">data2</p>
    <div id="mydivid"><p>data3</p></div>    
   </div>
</body>
</html>

这是我如何在我的jquery中调用这个。

var datahtml = "<html><body><div class=\"class0\"><h4>data1</h4><p class=\"class1\">data2</p><div id=\"mydivid\"><p>data3</p></div></div></body></html>";

alert($(datahtml).find(".class0").text()); // Doesn't Work

alert($(datahtml).find(".class1").text()); // work 

alert($(datahtml).find("#mydivid").text()); // work

只有alert($(datahtml).find(“。class0”)。text());不工作,其余都按预期工作。我想知道它可能是因为class0有多个标签里面或什么?在这种情况下如何获取data1?

解决方法

它的行为是奇怪的,因为它更像html和body标签,从class =“class0”的第一个div开始。 html被解析为DOM元素,但没有添加到DOM。对于添加到DOM的元素,选择器不会忽略body标记,并对文档应用选择器。您需要将HTML添加到DOM,如下所示。

Live Demo

$('#div1').append($(datahtml)); //Add in DOM before applying jquery methods.

alert($('#div1').find(".class0").text()); // Now it Works too

alert($('#div1').find(".class1").text()); // work   

alert($('#div1').find("#mydivid").text()); // work

如果我们将你的html包装在一些html元素中,使它成为起点,而不是你的第一个div与class =“class0”,那么你的选择器将正常工作。

Live Demo

var datahtml = "<html><body><div><div class=\"class0\"><h4>data1</h4><p class=\"class1\">data2</p><div id=\"mydivid\"><p>data3</p></div></div></div></body></html>";

alert($(datahtml).find(".class0").text()); // Now it Works too

alert($(datahtml).find(".class1").text()); // work   

alert($(datahtml).find("#mydivid").text()); // work

What jQuery docs say about the jQuery parsing function jQuery() i.e. $()

When passing in complex HTML,some browsers may not generate a DOM
that exactly replicates the HTML source provided. As mentioned,jQuery
uses the browser”s .innerHTML property to parse the passed HTML and
insert it into the current document. During this process,some
browsers filter out certain elements such as <html>,<title>,or
<head> elements. As a result,the elements inserted may not be representative of the original string passed.

原文链接:https://www.f2er.com/jquery/184407.html

猜你在找的jQuery相关文章