2010-06-23 156 views
9

我有一個隱藏的div,具有固定高度和滾動條。我想改變滾動位置,但瀏覽器不會讓我這樣做,因爲div是隱藏的。 scrollTop屬性將堅持爲0.更改隱藏div的滾動

此外,我不想顯示和隱藏div,導致閃爍。

如果有人知道如何去做,它會非常有幫助。

謝謝!

+0

當您取消隱藏時,您不能更改滾動位置嗎? – NibblyPig 2010-06-23 10:40:08

回答

2

我的問題並不完整。 div並不是自己隱藏的。它是隱藏的容器div的一部分。內部div顯示與他的父母。

<div class="container hidden"> 
    <div id="some_div">Content</div> 
    <div id="my_div">I wanted to scroll this one</div> 
    <div id="other_div">Content</div> 
</div> 

我們使用jQuery想出了一個自定義的「onShow」事件。

所以現在我們可以這樣做:

$('#my_div').bind('show', function() { 
    handle_scrollTopOffset(); 
}); 

當show事件被綁定,就增加了類.onShow到div。 jQuery.fn.show()函數已被覆蓋,觸發具有.onShow類的孩子的'show'事件。

謝謝大家的建議。對不起,我提供了一個不完整的問題。下次我會提供所有的細節。

+0

這是我找到的最佳解決方案。我只是將scrollTop()函數從我的關閉函數移到了我的開頭函數中,而不是事件。 – stackers 2015-08-19 15:52:11

2

爲了防止格閃爍和修復<div>不可用性腳本可以使用位置隱藏的"display: none;"代替:

.hidden { 
    position: absolute !important; 
    left: -9999px !important; 
    top: -9999px !important; 
} 
3

您可以使用jQuery的數據功能保存滾動。

function SaveScroll(val) 
{ 
    $(the_element).data("Scroll", val); 
} 

function Show() 
{ 
    var element = $(the_element); 

    // prevent from showing while scrolling 
    element.css 
    ({ 
     position: "absolute", 
     top: "-50000px", 
     left: "-50000px", 
     display: "" 
    }); 

    // Scroll to the position set when it was hidden 
    element.scrollTop(element.data("Scroll")); 

    // show the element 
    element.css 
    ({ 
     position: "", 
     top: "", 
     left: "" 
    }); 
} 

這可能做的伎倆


你也許可以只使用visibility: hidden,而不是display: none。可見性將元素保留在原來的位置。我相信它和opacity: 0完全一樣,但它是一個跨瀏覽器的解決方案。