【问题标题】:Get and insert <ul> with jquery使用 jquery 获取和插入 <ul>
【发布时间】:2012-08-06 17:55:14
【问题描述】:

我正在破解一个 Lightbox javascript 图像插件,以在页面上显示来自画廊的缩略图。该页面有一系列&lt;img&gt; 和“gallery-image”类。我正在收集它们并将它们放入名为“lb-thumbs”的灯箱叠加层中的一个 div 中。所以我把这段代码放到了一个灯箱函数中:

var $thumbs = ($(".gallery-image").get());
$lightbox.find('.lb-thumbs').append($thumbs);

它可以工作,但是一旦灯箱打开,原始图像(灯箱叠加层后面)就会消失,因此当我关闭灯箱时,页面的原始 html 库已经消失。由于浏览器检查器工具,我知道当灯箱打开时会发生这种情况。所以我的代码中一定有一些东西让&lt;img&gt; 项目消失了。会不会是 jQuery get()append()?我看不出这是在哪里发生的。可以吗?

谢谢! 马特

【问题讨论】:

    标签: jquery lightbox


    【解决方案1】:

    似乎.get() 方法返回了对原始数组的引用。 .get() 无论如何都是多余的。试试这个:

    var $thumbs = $(".gallery-image");
    $lightbox.find('.lb-thumbs').append($thumbs);
    

    您可以在分配之前交替克隆数组:

    var $thumbs = ($(".gallery-image").clone().get());
    $lightbox.find('.lb-thumbs').append($thumbs);
    

    【讨论】:

    • 第一个不起作用,但第二个起作用了,尽管我按照您的建议从第二个中删除了 get()。非常感谢!
    【解决方案2】:

    我认为 append() 实际上是导致您的问题的原因。当您进行追加时,您不会创建新对象,只是将旧图像从 DOM 中拉出并将其重新插入到您的灯箱中。

    您始终可以在插入之前克隆对象。

    DEMO

    $lightbox.find('.lb-thumbs').append($thumbs.clone());
    

    【讨论】:

    • 这实际上不起作用。我使用了上述评论者的建议。不过还是谢谢你。
    • 没错,你可能无法克隆 get()。
    猜你喜欢
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    相关资源
    最近更新 更多