2

にバインドする 2 つの js スクリプトがあります$(window).scroll()。あるスクリプト (example1.js) では、特定の基準が満たされたときにイベントのバインドを解除する (または受け入れ可能な代替手段を見つける) 必要がありますが、これにより.scroll()イベントが完全にバインド解除され、すべての機能が削除されます。

私がやりたいことは、基準が満たされたら、example2.js ではなく example1.js のスクロール イベントの発生を停止することです。

example1.js

function exampleFunction(self) {
    $(window).scroll(function () {
        if ($(window).scrollTop() >= $(document).height() - $(window).height() - 364) {
            self.start();
        }
    });

    $.ajax({
        url: self.settings.dataUrl,
        dataType: "json",
        async: false,
        cache: false,
        success: function (json) {
            if (json.data.length) {
                self.json = json;
                self.addImages();
            } else {
                $(window).unbind('scroll');
            }
        }
    });
}

example2.js

$(window).scroll(function () {
    someFunction();
}); 
4

2 に答える 2

2

名前空間イベントを見てください。これにより、イベントの名前空間を作成してから、その名前空間のみのバインドを解除し、他のバインドはそのままにしておくことができます。

例えば:

// Create Bindings //
$(window).bind('scroll.example1', function(e){
    ...
});

$(window).bind('scroll.example2', function(e){
    ...
});

// Unbind ONLY .example1 Namespace //
$(window).unbind('scroll.example1');

これがお役に立てば幸いです。

于 2012-09-04T20:22:20.643 に答える
1

イベントをバインドするときに名前空間イベントを使用します。

例:

//bind click.a
$('.class').on('click.a', function(){ alert ('inside a space'); }); 
//bind click.b
$('.class').on('click.b', function(){ alert ('inside b space'); }); 

//unbind click.b
$('.class').off('click.b');

//trigger click.a
$('.class').trigger('click.a');

あなたの場合、

example1.js

function exampleFunction(self) {
    $(window).on('scroll.e1', function () {  //bind scroll.e1
        if ($(window).scrollTop() >= $(document).height() - $(window).height() - 364) {
            self.start();
        }
    });

    $.ajax({
        url: self.settings.dataUrl,
        dataType: "json",
        async: false,
        cache: false,
        success: function (json) {
            if (json.data.length) {
                self.json = json;
                self.addImages();
            } else {
                $(window).unbind('scroll.e1'); //unbind scroll.e1
            }
        }
    });
}

example2.js

$(window).on('scroll.e2', function () { //bind scroll.e2
    someFunction();
}); 
于 2012-09-04T20:22:49.957 に答える