它的行为是奇怪的,因为它更像html和body标签,从class =“class0”的第一个div开始。 html被解析为DOM元素,但没有添加到DOM。对于添加到DOM的元素,选择器不会忽略body标记,并对文档应用选择器。您需要将HTML添加到DOM,如下所示。
$('#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”,那么你的选择器将正常工作。
var datahtml = "
data1
data2
data3
alert($(datahtml).find(".class0").text()); // Now it Works too
alert($(datahtml).find(".class1").text()); // work
alert($(datahtml).find("#mydivid").text()); // work
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 ,
, or