2012-02-21 5 views
14

ユーザーが100ピクセルスクロールした後にアラートを発生することは可能ですか?100ピクセルスクロール後のjQueryアラート

これまで私がこれまで持っていたことはありますが、私は何かが欠けていることを知っています。

$(window).scroll(function() { 
    if (document.documentElement.clientHeight + 
     $(document).scrollTop() == "100px") 
    { 
     alert("You've scrolled 100 pixels."); 
    } 
}); 
+0

みては? –

答えて

40

ウィンドウ.scrollTop(整数を返します)を見てみましょう。

$(window).scroll(function() { 
    if ($(this).scrollTop() === 100) { // this refers to window 
     alert("You've scrolled 100 pixels."); 
    } 
}); 

が、あなたはそれが警告ボックスをトリガー習慣102pxスクロールしている場合。

あなたはちょうどそれがtriggedされている場合は、一度にtrueに設定し、グローバル変数を持つアラートをトリガーする場合:

$(function(){ 
    var hasBeenTrigged = false; 
    $(window).scroll(function() { 
     if ($(this).scrollTop() >= 100 && !hasBeenTrigged) { // if scroll is greater/equal then 100 and hasBeenTrigged is set to false. 
      alert("You've scrolled 100 pixels."); 
      hasBeenTrigged = true; 
     } 
    }); 
}); 

か、単に警告ボックスがtriggedされた後、スクロールイベントをバインド解除:

$(function(){ 
    $(window).bind("scroll.alert", function() { 
     var $this = $(this); 
     if ($this.scrollTop() >= 100) { 
      alert("You've scrolled 100 pixels."); 
      $this.unbind("scroll.alert"); 
     } 
    }); 
}); 
+0

$(this).scrollTop()> = 100を使用する方が良いでしょうか? – whostolemyhat

+0

彼はちょうどそれが正確な数字と正確な数字で刻まれたければそれに依存します。私はそれを編集し、別の例も加えました。 – voigtan

+0

最初の呼び出し後に自動的にイベントのバインドを解除するjQueryの[one()](http://api.jquery.com/one/)関数を使用できます。 – yoavmatchulsky

0

これを試してみてください:

$(document).scrollTop() >= 100) { 
    // ... 
} 

scrollTop()は、整数を返します。 をスクロールして 100pxを超えると、このバージョンは真と評価されます。

0

は、このコードの結果どのようなものです

document.documentElement.clientHeight + $(document).scrollTop() == 100