2011-12-20 52 views
1

我似乎遇到jScrollPane似乎無法在第一次嘗試時加載的問題,也許是因爲我的表有圖像,我不知道。jScrollPane不會在第一次嘗試時加載

This is the demo

我嘗試各種東西,如這樣的:

$(window).bind('load', function() { 
    $('.scroll-pane').jScrollPane(); 
    $('.scroll-pane').jScrollPane({ 
     reinitialiseOnImageLoad: true 
    }); 
}); 

無濟於事:(如果有人知道這是怎麼回事,請讓我知道了,謝謝!youu

回答

1

它實際上適用於我,但jScrollPane出現一些延遲,我認爲這是因爲你已經編碼初始化像這樣:

$(function() { 
    $(window).bind('load', function() 
    { 
     $('.scroll-pane').jScrollPane(); 
    }); 
}); 

綁定到事件load將執行(html,腳本,圖像,樣式表...)之前等待所有頁面資源加載。

是否有一個特定的原因你綁定加載事件?

實際上,你想申請JScrollPane的被初始化時,你.scroll-pane元素已經準備好這麼簡單的做到這些:

$(function() { 
     $('.scroll-pane').jScrollPane(); 
}); 

編輯

我已經調試頁面確認當被稱爲jScrollPane()。
我不知道該表實際上是用ajax加載的。

問題很簡單:當您調用jScrollPane()時,您的.scroll-pane不存在!

當頁面是 「準備」,在這裏是指在執行什麼:

  • 開始加載表:

    $('#whole-ajax-content-one').load('events.html', function() { ... });

  • 執行你綁定加載事件(因爲頁面實際上已加載,綁定在window.load上與您的ajax加載「events.html」無關:

    $('.scroll-pane').jScrollPane();

    由於您的表格尚未加載/創建,因此$('.scroll-pane')爲空!

  • 執行.load(回調)(與.tablesorter(),委託()等)


解決方案是把你的JScrollPane的初始化代碼進入回調.load()。這將確保您的.scroll-pane元素確實存在。

注意:我不是100%確定的,但它可能會在連續重新加載時工作,因爲涉及瀏覽器緩存,並且在執行jScrollPanel()時偶然已經存在表。

+0

感謝德羅巴找到!但是,對我來說,它仍然不能在第一次嘗試。我嘗試加載函數的原因是爲了在所有圖像加載到表格之前滾動窗格將等待...但是它不起作用。 – pufAmuf 2011-12-20 12:08:25

+0

非常好,感謝Didier的幫助! – pufAmuf 2011-12-20 15:12:01

相關問題