3
在jQuery文檔頁面上,我注意到Disqus評論在我滾動到頁面的該部分之前不會打開。在滾動時看到/達到div時加載div內容
向下滾動此頁面的底部,你會發現影響:http://api.jquery.com/child-selector/
我納悶這是怎麼做的,因爲我想用它在我的網站,因爲這將有助於減少網頁加載時間。
在jQuery文檔頁面上,我注意到Disqus評論在我滾動到頁面的該部分之前不會打開。在滾動時看到/達到div時加載div內容
向下滾動此頁面的底部,你會發現影響:http://api.jquery.com/child-selector/
我納悶這是怎麼做的,因爲我想用它在我的網站,因爲這將有助於減少網頁加載時間。
在看看源該網頁,開始上線461左右:
jQuery(function(){
var ds_loaded = false,
top = jQuery("#comments").offset().top,
instructionsCloned = false;
function check(){
if (!ds_loaded && jQuery(window).scrollTop() + jQuery(window).height() > top) {
jQuery.getScript("http://jquery.disqus.com/disqus.js?v=2.0&slug=child_selector_8220parent_child8221&pname=wordpress&pver=2.12");
ds_loaded = true;
} else if (!instructionsCloned && document.getElementById('dsq-form-area')) {
var instructions = jQuery('ul.comment-instructions');
instructions.clone().css({
backgroundColor: instructions.css('backgroundColor'),
borderWidth: instructions.css('borderWidth'),
padding: '1em',
margin: '1em 0'
}).prependTo('#dsq-form-area');
jQuery("#dsq-new-post > h3").text("Add a Contribution");
instructionsCloned = true;
}
}
jQuery(window).scroll(check);
check();
});
他們首先獲得補償的意見div的頂部:
top = jQuery("#comments").offset().top
然後他們定義一個名爲check()
的函數,該函數檢查窗口的當前滾動高度,以及如果該值加上窗口高度大於偏移值,則會加載disqus腳本:
if (!ds_loaded && jQuery(window).scrollTop() + jQuery(window).height() > top) {...}
然後他們這個check()
功能綁定到scroll
事件窗口:
jQuery(window).scroll(check);
TL;博士:每當你滾動頁面,他們正在檢查的滾動的高度對抗的偏移高度評論div,如果它是可見的,那麼它加載disqus腳本(加載註釋)。
HTH :)
清楚你花了寫這篇優秀的答案,有沒有你決定離開原來的問題是鬆散的理由嗎? – 2011-05-16 05:23:33
@Sam Saffron:說實話,當我第一次讀它時,我沒有閱讀或理解它的問題。如果我現在看它,是的,這不是最好的措辭。通常情況下,我會盡力解決問題,但這並不是我想到的。我現在修復它:) – 2011-05-16 22:36:56
感謝堆,我只是想弄清楚是否有辦法讓系統「鼓勵」你更多的做這樣的事情 – 2011-05-16 23:19:52