7

aTestEvent()ユーザーが500ピクセルを超えて水平にスクロールするとトリガーされる次のjQuery関数があります。

jQuery(document).scroll(function(){
    if(jQuery(this).scrollLeft() >= 500){
           aTestEvent();
 }});

ここに問題があります: 私はaTestEvent()一度だけトリガーされたい! ただし、ユーザーがページの先頭にスクロールして戻り、500 ピクセルを超えるたびに、再びaTestEvent()トリガーされます。

ユーザーが最初に 500 ピクセルを超えてスクロールしたときにのみトリガーが発生するように、上記のコードを調整するにはどうすればよいでしょうか?

4

1 に答える 1

15

on次のoffメソッドを使用できます。

$(document).on('scroll', function() {
    if( $(this).scrollLeft() >= 500 ) {
        $(document).off('scroll');
        aTestEvent();
    }
});

http://jsfiddle.net/3kacd/

注意: このコード スニペットは、特定のページで使用可能なすべてのスクロール イベントを「オフ」にすることができますが、他のスクロール ハンドラーを妨害することなく目的のスクロール ハンドラーのみをスクロール オフするには、名前空間を使用できます。名前空間は、階層的ではないという点で CSS クラスに似ています。1 つの名前だけが一致する必要があります。

$(document).on('name1.scroll', function() {
    if( $(this).scrollLeft() >= 500 ) {
        $(document).off('name1.scroll');
        aTestEvent();
    }
});

http://jsfiddle.net/shekhardtu/3kacd/57/

于 2013-05-28T02:00:07.067 に答える