【发布时间】:2012-02-13 15:12:04
【问题描述】:
如果我通过 jQuery 读取 XML,我无法通过 class 属性将 CSS 规则应用于包含的元素。
例子:
我有以下 XML:
<?xml version="1.0" encoding="UTF-8"?>
<div class="alpha">won't be found by CSS!</div>
我通过 AJAX 将它加载到我的 HTML:
$(document).ready(function() {
$.ajax({
url: 'snippet.xml',
type: 'GET',
dataType: 'xml',
timeout: 10000,
error: function() { alert('Error loading XML document'); },
success: function(xml) {
$(xml).find('div.alpha').each(function() {
$(this).appendTo($('#result'));
});
}
});
});
然后,我有以下 CSS:
.alpha {
color: red;
}
最后,原始的 HTML 看起来像这样(在附加之前):
<div class="alpha">will be found by CSS!</div>
<div id="result"></div>
所以最后会有两个带有class=alpha的div。奇迹是 CSS 将应用于第一个而不是第二个,它来自 XML 输入。我做错了什么?
【问题讨论】:
-
显示 完整 呈现的 HTML + CSS 定义。不可能。您的 html 可能无效
-
如果你发回 HTML,你应该把它作为 HTML,而不是 XML。
-
jQuery 现在迫切需要一个
$.ajah()方法和一个$a.ajaj()方法。 -
@Boltclock:如果您的意思是在返回时期望 HTML 或 javascript,那么您可以使用 dataType 告诉它它将返回什么......这可能对这里有用将数据类型更改为“xml html”,我的阅读应该假设它接收 XML,然后将其转换为 HTML。我不知道它是否会有所帮助,但我只能想象将其视为 HTML 而不是 XML 的事实导致了问题......(有关文档,请参阅 api.jquery.com/jQuery.ajax)
-
@Chris:我知道这一点。我只是在取笑
$.ajax()这个名称是如何指代异步 JavaScript 和 XML :)
标签: javascript jquery html css xml