2017-06-04 70 views
0

我发现了一些在线解决方案,但无法让他们为我工作。或者,也许我做错了。我是JS中的新手,你能帮我推迟这个功能吗?如何推迟一个JQUERY onload函数

jQuery(window).on('load', function(){ var $ = jQuery; 
var $container = $('.social_container'); 
$container.masonry({ 
     columnWidth:350, 
     gutterWidth: 355, 
     itemSelector: '.masonryImage' 
}); 
}); 
+0

为什么你需要延迟它?如果你想等到别的东西加载,你应该在加载完成后把它放到回调函数中。 – Barmar

+0

我正在加载Facebook嵌入。通常Facebook嵌入需要时间来加载。这就是为什么要延迟。我不确定回调函数。 @Barmar –

+0

你用什么API来加载嵌入。我敢打赌它有一个回调函数。 – Barmar

回答

1

可以使用的setTimeout()的JavaScript: -

jQuery(window).on('load', function() { 
    setTimeout(function() { 
     var $ = jQuery; 
     var $container = $('.social_container'); 
     $container.masonry({ 
      columnWidth: 350, 
      gutterWidth: 355, 
      itemSelector: '.masonryImage' 
     }); 
    }, 2000); 
}); 
+0

谢谢!有效! –

1

使用setTimer()

jQuery(window).on('load', function() { 
    setTimer(function() { 
     var $ = jQuery; 
     var $container = $('.social_container'); 
     $container.masonry({ 
      columnWidth: 350, 
      gutterWidth: 355, 
      itemSelector: '.masonryImage' 
     }); 
    }, 1000); 
}); 

这将延缓它1秒钟。

+0

抱歉,它不适用于我。我已经尝试过了。我不知道为什么它不适合我。 –

+0

@AsifurRahman你接受了另一个几乎完全相同的答案。唯一的区别是我的延迟是1秒,他是2秒。 – Barmar

0

的做法应该是等待插件加载,然后才打电话给你的函数。

var finished_rendering = function() { 
    console.log("finished rendering plugins"); 
} 

// In your onload handler 
FB.Event.subscribe('xfbml.render', finished_rendering);