2013-04-21 31 views
8

Ich Frage eine bestimmte Frage über jquery Scroll-Ereignisse, aber es scheint wie die Antwort Auswirkungen auf jquery Ereignisse im Allgemeinen haben könnte (was ich auch wissen möchte).Mehrere Scroll-Event-Definition und diskriminierende Ereignisbindung

Angenommen, jQuery-Plugin A (zB jquery.scrollspy.js)

Jetzt sagen eine Scroll-Ereignis $(window) bindet, dass einige Website Importe A Plugin, aber es hat auch seine eigene benutzerdefinierte JavaScript-Datei B, die bindet ein weiteres .scroll() Ereignis zu $(window).

Später, Javascript-Datei B will sein eigenes scroll-Ereignis zu lösen, und lassen Sie Jquery-Plugin A intakt. Wie wird das gemacht?

und ...

Ist diese Methode universell für alle jquery Ereignisse?

+0

Für interessierte diejenigen Sehen Sie diese ohne jQuery dabei: http://StackOverflow.com/Questions/4402287/Javascript-Remove-Event-Listener –

Antwort

8

jQuery empfiehlt die Verwendung ein und aus, anstatt binden und unbind.

function scrollEvent() 
{ 
} 
$(window).on('scroll',scrollEvent); 
$(window).off('scroll',scrollEvent); 

http://api.jquery.com/on/

0

Das ist einfach. Haben Sie nicht genug Forschung vor die Frage stellt:

var fileBScrollEvent = function() { 
    // do something on scroll event 
} 


$(window).bind('scroll',fileBScrollEvent); 

... später im Code ...

$(window).unbind('scroll',fileBScrollEvent); 
+0

Die Lösung ist nicht falsch, aber jQuery bevorzugt, Sie verwenden ein- und ausschalten (seit 1.7). –

5

Beste jQuery .on() und .off() Methoden statt .bind() und .unbind() zu verwenden.

Ab jQuery 1.7 ist die .on() -Methode die bevorzugte Methode zum Anhängen von Ereignishandlern an ein Dokument.

Sie können das Ereignis auch mit einem Namespace versehen, indem Sie dem Ereignisnamen ein benutzerdefiniertes Suffix hinzufügen. Sie können dann diese besondere Ereignis später zugreifen (zum Beispiel entbinden) ...

$(window).on('scroll.myscroll', function() { 
    // do something on scroll event 
}); 

eine Höhle ...

$(window).off('scroll.myscroll'); // unbind my namespaced scroll event 

https://css-tricks.com/namespaced-events-jquery/