jqueryxml解析
假设我有一个xml。。“xml2.xml”jqueryxml解析,jquery,xml,Jquery,Xml,假设我有一个xml。。“xml2.xml” abc abc abc def def def def def def 还有一个jquery代码 <script> $(document).ready(function () { $.ajax({ type: "GET", url: "xml2.xml", dataType: "xml", success: xmlParser }); }); functio
abc
abc
abc
def
def
def
def
def
def
还有一个jquery代码
<script>
$(document).ready(function () {
$.ajax({
type: "GET",
url: "xml2.xml",
dataType: "xml",
success: xmlParser
});
});
function xmlParser(xml) {
$(xml).find("event").each(function () {
$(".slides").append('<b>1');
$(this).find("subeve").each(function () {
$(".slides").append('<i>2</i>');
});
$(".slides").append('</b>');
});
}
</script>
$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:“xml2.xml”,
数据类型:“xml”,
成功:xmlParser
});
});
函数xmlParser(xml){
$(xml).find(“事件”).each(函数(){
$(“.slides”).append('1');
$(this).find(“subeve”).each(函数(){
$(“.slides”).append('2');
});
$(“.slides”)。追加(“”);
});
}
输出为:
11112221222
但我希望输出为..:<代码>11112221222
我该怎么做
我的第二个问题。。我的第一个问题真的很傻吗??
:-您考虑的是标记(
,然后是以后的
),但一旦处理DOM元素,您就处理的是对象,而不是标记。具体来说,当您执行$(“.slides”).append(“”)
,它创建一个b
元素并将其附加到幻灯片
。它不会“打开”一个
标签。然后,当您稍后执行$(.slides”).append(“2”)
它创建一个i
元素,并将其附加到幻灯片中,在b
元素之后,而不是在其内部。我不知道jQuery如何处理。append(“”
,不要这样做。:-)
您可以构建元素并在运行时将其追加(将i
元素追加到每个b
,并将b
追加到.slides
),或者构建标记字符串并在完成后将其追加到.slides
)
第一个选项“构建图元”可能如下所示:
function xmlParser(xml) {
var slides = $(".slides");
$(xml).find("event").each(function () {
var b = $("<b>").text("1");
$(this).find("subeve").each(function () {
b.append('<i>2</i>');
});
slides.append(b);
});
}
function xmlParser(xml) {
var markup = [];
$(xml).find("event").each(function () {
markup.push('<b>1');
$(this).find("subeve").each(function () {
markup.push('<i>2</i>');
});
markup.push('</b>');
});
$(".slides").append(markup.join(""));
}
函数xmlParser(xml){
变量幻灯片=$(“.slides”);
$(xml).find(“事件”).each(函数(){
变量b=$(“”)。文本(“1”);
$(this).find(“subeve”).each(函数(){
b、 附加('2');
});
幻灯片。附加(b);
});
}
|
第二个选项“构建标记”可能如下所示:
function xmlParser(xml) {
var slides = $(".slides");
$(xml).find("event").each(function () {
var b = $("<b>").text("1");
$(this).find("subeve").each(function () {
b.append('<i>2</i>');
});
slides.append(b);
});
}
function xmlParser(xml) {
var markup = [];
$(xml).find("event").each(function () {
markup.push('<b>1');
$(this).find("subeve").each(function () {
markup.push('<i>2</i>');
});
markup.push('</b>');
});
$(".slides").append(markup.join(""));
}
函数xmlParser(xml){
var标记=[];
$(xml).find(“事件”).each(函数(){
markup.push('1');
$(this).find(“subeve”).each(函数(){
markup.push('2');
});
markup.push(“”);
});
$(“.slides”).append(markup.join(“”);
}
|如果您只希望所有内容都以粗体显示,请使用CSS:
.slides{
font-weight:bold;
}
如果您想将HTML标记用于其他用途,我强烈建议您使用某种形式的模板,而不是使用jQuery创建原始HTML。Dude,它起作用了…:)。。。Thanx很多。。但是你能解释一下为什么我的代码会产生这样的结果吗????@FREAKENGINEER:当你做
.append(“”
)时,它会创建一个b
元素并将其附加到幻灯片中。它不会“打开”一个
标签。然后,当您稍后执行.append(“2”)
时,它会创建一个i
元素,并在b
元素之后附加该元素,而不是在其内部。我不知道jQuery如何处理。append(“”
,不要这样做。:-)@工程师:哪个更快?这真的重要吗?除非您遇到真正的、特定的性能问题,否则请关注可读性和可维护性。在任何情况下,哪个更快将完全取决于现实生活中的场景,并且可能因浏览器而异。构建元素并添加它们的版本更频繁地“接触”DOM,因此可能导致更多的回流等等;在内存中构建标记的版本是构建一个数组,进行连接,然后应用生成的标记。这可能(也可能不是)更快,但肯定更难维持。