【问题标题】:jQuery append orderjQuery追加顺序
【发布时间】:2011-05-19 23:58:47
【问题描述】:

为了简单起见,我只是不明白为什么这不起作用。

我需要将一个 div 附加到文档的正文,然后再次复制相同 div 但隐藏,然后是另一个 div,然后再次复制另一个相同 div 但隐藏,依此类推...

    $.each(myObj.items, function(i, item) {

        // createItem simply finds an html fragment in the document,
        // clones it and returns it
        var $i = createItem(item);

        // add a div first that clears floats - this is needed before every item
        $('body').append('<div class="clear"/>');

        // append a clone of the html fragment
        $('body').append($i.clone());

        // add another div that clears floats
        $('body').append('<div class="clear"/>');

        // append a clone of the html fragment but hide it
        $('body').append($i.clone().addClass('hidden'));

    });

我期待:

    <body>
        <div class="clear"/>
        <div class="item">item</div>

        <div class="clear"/>
        <div class="item hidden">item</div>

        <div class="clear"/>
        <div class="item">item</div>

        <div class="clear"/>
        <div class="item hidden">item</div>
        ...
    </body>

但我明白了..

    <body>
        <div class="clear"/>
        <div class="item">item</div>

        <div class="clear"/>
        <div class="item">item</div>

        <div class="clear"/>
        <div class="item hidden">item</div>

        <div class="clear"/>
        <div class="item">item</div>

        <div class="clear"/>
        <div class="item hidden">item</div>
        ...
    </body>

为什么第一个跳过?

编辑

我的源 html 是这样的:

    <html>
        <body>
            <div class="template hidden">..</div>
        </body>
    </html>

我克隆模板 div,将其返回到我的函数,添加一个 div (class='clear'),然后是返回的 div 的克隆,然后是另一个 div (class='clear'),然后是返回的另一个克隆div

我的列表中的项目不超过 5 个。

编辑 2

愚蠢的用户错误...代码工作正常。我没有意识到我的第一行是硬编码而不是自动生成的。

对不起,伙计们......(感觉很愚蠢)

【问题讨论】:

  • 你能提供一个(非)工作的例子吗?这似乎像这样工作:jsfiddle.net/hpw95
  • 这是令人沮丧的部分。我不明白为什么它不能工作,你已经确认它可以工作,但出于某种奇怪的原因(请原谅开发人员的口头禅)它不能在我的机器上工作?

标签: jquery append


【解决方案1】:

您是否正在克隆现有的 div 集? IE。您的页面上已经有一个,因此您的函数会克隆并添加一个常规的,然后然后将另一个克隆添加为隐藏。

【讨论】:

  • 我隐藏了我克隆的 div,然后删除隐藏的类并返回我的函数。我将此附加到文档中,但因为我想直接在下方附加它的副本,所以我再次克隆它。
  • 比你自己回答的还好!删除它。
  • 我很愚蠢。对不起大家。我刚刚看到一个是硬编码的,其他的都是生成的。我再次道歉...... RTFM应该......
  • @Alan - 前几天我在推特上看到了一个很棒的短语:“今天不能动脑子。我有笨蛋。”发生在我们所有人身上:)
  • @Alan - 很高兴你知道了!
【解决方案2】:

当使用三个项目调用时,该代码适用于我 (http://jsfiddle.net/alnitak/M5PQ8/)。

你确定你自己没有把多余的 div 放在 body 中吗?您的myObj.items 中有多少项?

【讨论】:

    猜你喜欢
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2013-04-26
    • 1970-01-01
    • 2011-09-27
    • 2022-06-10
    • 2021-12-20
    相关资源
    最近更新 更多