jQuery XML重复追加

时间:2011-05-30 14:11:20

标签: jquery xml each

我是XML的新手。当我尝试将一些“案例”放入它的XML-parent(称为ITEM)时,它会填充所有的ITEMS,并在某些项目上进行公开。我有6个案例,但不知何故,它在其中一个ITEM中显示了12个案例。

我有一个XML文件,如下所示:

<menu>
<item>
    <headline />
    <body />
    <cases>
        <case><link /></case>
        <case><link /></case>
        <case><link /></case>
        <case><link /></case>
        <case><link /></case>
        <case><link /></case>
        <case><link /></case>
    </cases>
</item>
<item>
    <headline />
    <body />
</item>

在没有任何案件的ITEM上,我不希望显示任何案例。我只希望将案件“放入”正确的ITEM中。

我该怎么做?

要显示项目,我使用:

$(xml).find('item').each(function(){
    var headline = $("headline", this).text();
    $("ul").append("<li class='" + name + "'><h3>" + headline + "</h3>");

    if ($(xml).find('case').length != 0) {
        //I want it to place this, in the correct ITEM, and not in all items.
        $("ul li").append("<ul class='cases'>");
        $(xml).find('case').each(function(){
            caseLink = $("link", this).text();
            $("ul li .cases").append("<li><a href='" + caseLink + "' /></a></li>");

        });
        $("ul li").append("</ul>");
    }
    $("ul").append("</li>");
});

我做错了什么???

提前谢谢你......

2 个答案:

答案 0 :(得分:0)

those line:

if ($(xml).find('case').length != 0) {
[...]
$(xml).find('case').each(function(){

应该是

if ((this).find('case').length != 0) {
[...]
(this).find('case').each(function(){

或类似的东西(我没有测试过)。

现在,您在 xml 内搜索,在项元素上循环,然后在案例元素 ... > xml 而不是当前的项元素

答案 1 :(得分:0)

问题是,我两次调用(XML)。

调用“if(XML)”的第二个(及以下)时间,改为使用“(this)”。

变化:

if ($(xml).find

要:

if ($(this).find

这是为我做的。