2017-06-04 88 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);