Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryxml解析_Jquery_Xml - Fatal编程技术网

jqueryxml解析

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

假设我有一个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
    });
});
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,因此可能导致更多的回流等等;在内存中构建标记的版本是构建一个数组,进行连接,然后应用生成的标记。这可能(也可能不是)更快,但肯定更难维持。