2014-10-30 32 views
0

我在同一頁面上有5個格子。所有的div都有相同的類名'post'和相同的高度'600px'。 所以我想要的是,當我滾動5 div之間的任何股利,當它達到了股利的頂部它應該警報值0.如何在滾動達到格子頂部時打印滾動()值爲0

麻煩是當我滾動div2,div3,div4,div5到頂部。它沒有打印值'0'。 但是,當我滾動div1到頂部,然後如果我滾動任何其他股利它顯示'0'。無論我首先滾動哪個div,我都需要打印 '0'。 爲什麼會發生。請參閱jsfiddle代碼的註釋部分。提前致謝。

演示

$("window").load() 
{ 
    $('.post').scrollTop($('.post').height()) 
} 

$('.post').scroll(function() { 
    if($('.post').scrollTop()==0) 
    { 
     alert('0'); 
    } 
}); 

jsfiddle

+0

http://jsfiddle.net/052xntw9/11/ – user2668276 2014-10-30 20:50:35

回答

0

變化

if($('.post').scrollTop()==0) 
{ 
    alert('0'); 
} 

if($(this).scrollTop()==0) 
{ 
    alert('0'); 
} 

$('.post').scrollTop()會給出第一個值div(第一個找到的元素)。如果第一個div的值爲0,$('.post').scrollTop() == 0將始終爲true,即使您正在滾動其他div

+0

這是完美的作品。謝謝先生。 – user2668276 2014-10-30 20:58:58

+0

不客氣! – 2014-10-30 20:59:56

0

你總是選擇第一格。這就是你得到這個結果的原因。

在此代碼:

if($('.post').scrollTop()==0) 
{ 
    alert('0'); 
} 

$( '後')scrollTop的()將返回第一個找到的元素。

試試這個:

$('.post').scroll(function() { 

    $('.post').each(function() { 
     if($(this).scrollTop()==0) 
     { 
      alert('0'); 
     } 
    }); 
}); 
+1

哦,現在我明白了。這非常有助於我理解這個問題。謝謝你,先生 – user2668276 2014-10-30 21:00:55

0

裹在父母的post的div,並通過孩子迭代。然後使用this關鍵字,以確定您滾動哪個孩子的div:

$('#allPosts').children().scroll(function() { 
    if ($(this).scrollTop() === 0) { 
     alert('0'); 
    } 
}); 
0

所有你需要的是:

$(".post").scroll(function() { 
    if ($(this).scrollTop() == 0) { 
     alert('0'); 
    } 
}); 

小提琴:http://jsfiddle.net/052xntw9/19/

這將附加一個事件偵聽器,每個格,而$(this)特指該div(而不是第一個div)。