我正在嘗試構建一個'scrollSpy'類型的函數。我不知道如何將一個參數與一個對象中的某些值進行比較,並返回(數值上)最高值的名稱。比較offset()。top與對象屬性
我有一些標記:
<ul class="nav">
<li><a href="a"></a></li>
<li><a href="b"></a></li>
<li><a href="c"></a></li>
<li><a href="d"></a></li>
<li><a href="e"></a></li>
<li><a href="f"></a></li>
</ul>
<section id="a" class="scrollspy"></section>
<section id="b" class="scrollspy"></section>
<section id="c" class="scrollspy"></section>
<section id="d" class="scrollspy"></section>
<section id="e" class="scrollspy"></section>
<section id="f" class="scrollspy"></section>
還有一些腳本,創建一個對象包括各section
,其距離的像素從頂部:
var obj = {
sectionOffset: {},
scrollSpy: function (scrolled) {
// This should look in the object with the offset values, and from all
// the values that (scrolled) is higher than, take the largest, and
// return its name.
}
}
$(function() {
$(window).scroll(function() {
obj.scrollSpy($(document).scrollTop());
});
// Create an object consisting of all elements I want to 'spy' on.
// Names and values are made of element ID and top offset respectively.
$('.scrollspy').each(function() {
obj.sectionOffset[$(this).attr('id')] = (parseInt($(this).offset().top));
});
});
後,我依次通過我想要的元素它會產生如下對象:
{
d: 5195,
b: 3245,
a: 1319,
f: 5682,
c: 2139,
e: 3343
}
要明確,如果th e用戶在頁面上滾動3000px,函數應該返回c
。
我打算嘗試將對象轉換爲數組,然後將其從最高位排序到最低位,並將滾動值與該數值進行比較。你救了我的麻煩,因爲這工作得很好!乾杯。 –