2015-10-13 46 views
1

我正在使用jquery的scrollTop函數,並無法弄清楚爲什麼它在同一項目上多次調用時跳轉。當在同一項目上多次調用scrollTop時跳轉

我已經把這個example放在一起來說明這個問題。單擊測試按鈕時,它會在指定的項目和列表中的其他位置之間切換。

$('#button').click(function() { 
 
$('.items').scrollTop($('li.8').offset().top); // scroll to item 8 
 
});
.items{ 
 
    max-height: 80px; 
 
    overflow: auto; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="items large-8 columns end"> 
 
<ul class="list"> 
 
<li class="0">Almy, Joannie </li><li class="1">Auclair, Donnette </li><li class="2">Auerbach, Trinh </li><li class="3">Bement, Margeret </li><li class="4">Bryan, Willian </li><li class="5">Bullen, Tempie </li><li class="6">Coppa, Ozella </li><li class="7">Dahlin, Clementina</li><li class="8">Dahlman, Sasha </li><li class="9">Dorfman, Josef </li><li class="10">Heckert, Whitney </li><li class="11">Hendershott, Lida </li><li class="12">Holmes, Ellsworth </li><li class="13">Jaffee, Karlyn </li><li class="14">Joslyn, Nora </li><li class="15">Kiley, Patrica </li><li class="16">Lakes, Mickie </li><li class="17">Leiker, Enola</li><li class="18">Lemaire, Shanel, </li><li class="19">Lingerfelt, Graham </li><li class="20">Mangum, Maile </li><li class="21">Marcinkowski, Monica </li><li class="22">Mcraney, Allyson </li><li class="23">Meyerson, Lura </li><li class="24">Mole, Eboni </li><li class="25">Paulsen, Merrie </li><li class="26">Preble, Rivka </li><li class="27">Privette, Vonnie </li><li class="28">Quinones, Tilda </li><li class="29">Rojo, Eloy </li><li class="30">Semple, Dwana </li><li class="31">Sifuentes, Tyron </li><li class="32">Sloat, Dante </li><li class="33">Slocum, Shanna </li><li class="34">Sly, Ellamae </li><li class="35">Stolp, Courtney </li><li class="36">Till, Lucien </li><li class="37">Ulman, Jennifer </li><li class="38">Wadlow, Cassandra </li><li class="39">Zellars, Marty </li> 
 
</ul> 
 
</div> 
 
<button id="button">test</button>

回答

2

這是因爲你得到的印性質和偏移回報相對元素位置記錄的項目,當你對你的UL滾動裏有8類,這意味着偏移量改變,並在這種情況下,你必須使用位置:

$('#button').click(function() { 
$('.items').scrollTop($('li.8').position().top); // scroll to item 8 
}); 

爲了使其正常工作,家長應該有相對位置,你可以檢查此琴:http://jsfiddle.net/wgqoh1b3/28/

+0

當我測試這一點,產生相同的結果 – Jess

+0

@Jess你必須做出相對父UL位置。 – Burimi

+0

@Jess檢查這個小提琴http://jsfiddle.net/wgqoh1b3/28/ – Burimi

2

要讓它停止跳動,你可以試試下面的代碼:

$('#button').click(function() { 
    $('.items').scrollTop(0); 
    $('.items').scrollTop($("li.8").position().top); 
}); 
+0

非常感謝您的建議,當與上面使用position()而不是offset()的建議結合使用時,這對我最有效。 跳回到頂部之前跳下來似乎有點破解,任何其他建議,讓這個工作正常? – Jess

+0

爲了解決這個問題,你需要找出如何獲得「li.8」相對於容器'.items'的位置(例如,容器/頂部距離你想要的元素的位置有多遠,計數就好像它是一個平面設計)。 –

相關問題