【问题标题】:iOS - insertAfter() not working after append()iOS - insertAfter() 在 append() 之后不起作用
【发布时间】:2015-01-18 23:46:08
【问题描述】:

我有一个动态加载的图片库。每个图像都有一个数字数据 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
    });

它使用延迟加载插件。在工作代码中,延迟加载功能紧跟在$('#class').append(Arr);之后出现

【问题讨论】:

  • 请详细说明 iOS 上到底发生了什么
  • 你能展示你的延迟加载功能吗?
  • @Tzach 排序后的图像数组正确显示,但没有插入'top' div。
  • 如果您删除了延迟加载代码,它是否按预期工作?如果您使用insertAfter()以外的其他方法,它是否按预期工作?
  • iOS浏览器中lazyload调用会出现一些错误,导致insertAfter代码语句停止执行

标签: jquery ios append insertafter


【解决方案1】:

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

请看这里:SO

【讨论】:

    猜你喜欢
    • 2015-04-24
    • 2012-02-18
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多