我有一個包含大量元素的div,並且overflow: scroll
。然後我想能夠滾動視圖中的第n個元素。我設置了一個小提琴,但我無法找到表達式來獲取相對於父項的元素位置。如何找到相對於它的父級的元素位置以將其滾動爲可見
http://jsfiddle.net/bortao/NXcTK/
我都嘗試el.position().top
和el.offset().top
,但他們沒有工作。
注意:h/2
是這樣的元素位於div的中間。
我有一個包含大量元素的div,並且overflow: scroll
。然後我想能夠滾動視圖中的第n個元素。我設置了一個小提琴,但我無法找到表達式來獲取相對於父項的元素位置。如何找到相對於它的父級的元素位置以將其滾動爲可見
http://jsfiddle.net/bortao/NXcTK/
我都嘗試el.position().top
和el.offset().top
,但他們沒有工作。
注意:h/2
是這樣的元素位於div的中間。
好了......只需將當前的scrollTop()添加到它。
http://jsfiddle.net/bortao/NXcTK/1/
var cont = $("#container");
var el = $(cont[0].children[index]);
var h = cont.height()/2;
var elementTop = el.position().top;
var pos = cont.scrollTop() + elementTop - h;
cont.animate({scrollTop: pos});
對於更穩定的解決方案,無論將工作的offsetParent(其可以與position屬性的值改變)的,我會用偏移()而不是位置():
cont.animate({scrollTop: cont.scrollTop() + (el.offset().top - cont.offset().top)});
問題是'cont.animate({scrollTop:(elementTop + h)});'。你想減去'h',而不是添加它。看起來你也可能想要添加元素高度的一半。所以,'cont.animate({scrollTop:(elementTop - h)});'。附:在這種情況下'el.position()。top'是正確的。 –
@BryanDowning我做了這個,現在它的工作原理,但只有當滾動條在初始位置。 – ariel
現在明白了,謝謝 – ariel