jQuery XML 重复追加

发布于 2024-11-10 18:58:55 字数 1493 浏览 2 评论 0原文

我是 XML 新手。当我尝试将一些“案例”放入其 XML 父级(称为 ITEM)中时,它会填充所有 ITEMS,并在某些项目上进行重复。我有 6 个案例,但不知何故它在其中一个项目中显示 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 上,我不希望显示任何案例。我只希望将箱子“放入”正确的项目中。

我该怎么做?

为了显示项目,我使用:

$(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>");
});

我做错了什么???

先感谢您...

I'm new to XML. When I try put in some "cases" into it's XML-parent (called ITEM), it fills into all the ITEMS, and dublicates on some. I have 6 cases, but somehow it shows 12 in one of the ITEMs.

I have an XML-file that looks like this:

<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>

On the ITEM that hasn't any cases in it, I don't want any cases to be shown. I only want the cases to be "put into" the right ITEM.

How do I do this?

To display the items, I use:

$(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>");
});

What am I doing wrong???

Thank you in advance...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鹤仙姿 2024-11-17 18:58:55

这些行:

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

应该是

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

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

现在,您在 xml 内搜索,在 item 元素 上循环,然后在 xml< 中搜索 case 元素... /em> 而不是当前的 item 元素

thoses line :

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

should be

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

or something similar (I did not test it).

Right now, you search inside xml, loop on the item element and then, search case element... in the xml instead of the current item element.

高冷爸爸 2024-11-17 18:58:55

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

第二次(及后续)调用“if (XML)”时,请改用“(this)”。

更改:

if ($(xml).find

至:

if ($(this).find

这对我来说是这样。

The problem was, that I called the (XML) twice.

The second (and the following) time the "if (XML)" is called, use "(this)" instead.

Change:

if ($(xml).find

To:

if ($(this).find

That did it for me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文