iOS - insertAfter()在append()后无效

时间:2014-11-20 22:46:09

标签: jquery ios append insertafter

我有一个动态加载的图片库。每个图像都有一个数字数据ID,我想按升序对它们进行排序。然后,因为它们很多,我想在每个第n个图像后插入一个“返回顶部”按钮。以下代码适用于桌面上的FF,Chrome和Safari:

$(function() {
    var Arr = $('.card').get();
    var Arr = Arr.sort(function(a,b) {
    var aLoc = +$('.ad',a).data('id'),
     bLoc = +$('.ad',b).data('id')
     return aLoc < bLoc? -1:aLoc > bLoc? 1 :0
     })
    $('#class').append(Arr);  
    $('<div class = "top">TOP</div>').insertAfter('#class div:nth-child(4n)');
});

小提琴here

有时,尽管我无法预测,但它也可以在iOS上运行,但通常会失败。我试过在insertAfter()周围包装一个setTimeout()函数,但没有区别。

我不知道它是否相关,但是一旦数组已经排序并附加到主div上,图像就会被延迟加载。

对于我出错的地方,我真的很感激。

由于

编辑:这是延迟加载函数:

$("img.lazy").lazyload({
        threshold : 200
    });

它使用lazyload插件。在工作代码中,延迟加载函数会在$('#class').append(Arr);

之后立即出现

1 个答案:

答案 0 :(得分:0)

我认为这可能是iOS8问题 - 但将:nth-child(n)更改为nth-of-type(n)似乎解决了这个问题。也许对iOS有更多了解的人可能会解释发生了什么。

见这里:SO