将 XML 插入 DOM 会导致类/id 选择器不起作用
我正在尝试使用 ajax 加载 XML 文件并将该 XML DOM 文档的部分内容插入到浏览器 HTML DOM 中。
到目前为止,这是有效的,但是当我尝试使用 jquery 获取带有类或 id 选择器的插入元素时,它返回空列表。
到目前为止我只在 firefox 10 中尝试过。有人知道为什么会这样吗?这样做是不是不安全?
测试.html:
<html><head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<title>dom test</title>
<script type="text/javascript">
$(function() {
var xml = null;
$.ajax({
type : "GET",
async : false,
url : 'test.xml',
dataType : "xml",
success : function(data) {
xml = data;
}
});
$('body').html($(xml).children().clone());
console.log($('h1')); // prints the h1 element
console.log($('.title')); // prints empty list
console.log($('p')); // prints the p element
console.log($('#content')); // prints empty list
});
</script>
</head><body></body></html>
测试.xml:
<div id="root">
<h1 class="title">Blabla</h1>
<p id="content">
Lorem ipsum
</p>
</div>
I'm trying to load an XML file with ajax and insert parts of this XML DOM document into the browsers HTML DOM.
This works so far, but when I try to get an inserted element with a class or id selector with jquery it returns the empty list.
I tried it only in firefox 10 so far. does anyone have a clue why this might be? is it just not safe to do so?
test.html:
<html><head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<title>dom test</title>
<script type="text/javascript">
$(function() {
var xml = null;
$.ajax({
type : "GET",
async : false,
url : 'test.xml',
dataType : "xml",
success : function(data) {
xml = data;
}
});
$('body').html($(xml).children().clone());
console.log($('h1')); // prints the h1 element
console.log($('.title')); // prints empty list
console.log($('p')); // prints the p element
console.log($('#content')); // prints empty list
});
</script>
</head><body></body></html>
test.xml:
<div id="root">
<h1 class="title">Blabla</h1>
<p id="content">
Lorem ipsum
</p>
</div>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来您只是想通过 AJAX 获取 HTML,然后将其插入到您的页面中。为此,您应该在 ajax 请求中使用
dataType: "html"
。It seems like you are just trying to grab HTML via AJAX and then insert it into your page. To do that you should be using
dataType: "html"
in your ajax request.它正在按预期进行。可以通过提醒
$(xnl).find("h1").text()
进行验证。但是,您可以尝试将 xml 中的双引号更改为单引号吗?并在您的 ff 中禁用 HTML5 支持(这也可能是问题)?It is doing as expected. Can verify by alerting the
$(xnl).find("h1").text()
. however can you please try with changing double quotes to single quotes in your xml. and disabling HTML5 support in your ff (that might be the issue too)?