2012-07-04 19 views
2

我使用ScrollToFixed非常成功,一次捕獲。我的內容中有一個擴展div,如果div被展開,scrollToFixed端點不會按照新的高度進行動態增加。可能'刷新'ScrollToFixed jQuery插件中的計算值?

因此,當擴展div被關閉時,端點保持固定到最初計算的點。該div然後修復自己有些在中間,而不是它應該修復div後展開的點。

我能想到的最簡單的修復方法是強制scrollToFixed在div展開後重新計算端點,有沒有辦法做到這一點?

或其他任何解決方案當然也歡迎!

回答

0

@ user338128在正確的軌道上;但是,插件僅在初始化或窗口大小調整時計算或重新計算其「端點」。當DIV膨脹或收縮,稱之爲:

$(window).resize() 

這將導致插件來解除固定,然後它的目標重新計算。

0

我不知道,如果它的工作原理,但是當展開做爲此

jQuery(window).scroll();

你用什麼功能拓展DIV?可以給插件的鏈接?

+0

它不是一個插件,只是一個簡單的jQuery找到CSS高度限制div的真正高度和擴大。這個div的高度與真正的價值。 http://jsfiddle.net/eFZCy/ – Mark

+0

爲什麼不添加這個選擇器:'.otsectionsmall.expanded {height:auto; ('。otsectionsmall')。addClass('explanded');});''並且這樣做'$(「.otsectionsmall.read-more」 – Ties

1

GitHub示例說在您的元素上調用trigger('resize'),這似乎在執行重新計算時起作用。但是,不存在綁定到您的元素的「調整大小」事件。但窗口上有這個,並導致重新計算。

調查插件代碼,有一個事件'resize.ScrollToFixed'。所以我聆聽窗口大小調整事件,這可能會導致我的元素展開或縮小,並在我的元素上執行trigger('resize.ScrollToFixed')。這很好地工作。

1

這個問題已經兩年了,給出的解決方案(它們來自Github Page)並不適用於我在自舉中擴展文本區域。

因此我寫了一個事件監聽器來動態更新插件的基礎選項的極限。

如果任何人有同樣的問題,這裏是修復:

此偵聽器添加到scrolltofixed.js,上線386 windowScroll監聽器之後:

$(document).on("changeLimit", 
    function(e) { 
     base.options.limit = e.limit; 
     checkScroll(); 
    } 
); 

將這個觸發器在你的應用程序函數來設置新的限制值時(動態textarea的大小變化爲例):

$.event.trigger({ 
    type: "changeLimit", 
    limit: $('.page_wizard').offset().top - your offset 
});