2012-04-03 9 views
0

In Ordnung, also mache ich ein animiertes Menü, das die Tabs hin und her bewegt/ausdehnt und flüssig aussieht. Ich habe alles funktioniert, außer das Ereignis der Animation zu lösen, das ich an die angeklickte Registerkarte anhefte. So ziemlich klicken Sie auf eine Registerkarte, ein Listener ist für das Ende der Animationen an sie angehängt und auf den Klick auf der nächsten Registerkarte möchte ich den Listener auf die Registerkarte, die zuvor geklickt wurde losbinden. Allerdings kann ich die Off-Funktion aus irgendeinem Grund nicht auslösen. Hier ist mein Code unter.off nicht bindend animationend event

var $featuredTab = this.$('.featured'), 
    $tabContainer = $(e.target).parent(), 
    $menu = this.$el, 
    index = $tabContainer.index(), 
    count = $tabContainer.parent().children().length; 

    if($featuredTab.length > 0) { 
     $menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd', $featuredTab, function() { 
      console.log('off'); 
      //do stuff 
     }); 
    } 

    $tabContainer.addClass('featured'); 


    $menu.on('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd', $tabContainer, function(e) { 
      console.log(e.originalEvent); 
      //do stuff 
    }); 

irgendwelche Ideen, warum das Aus-Ereignis nicht feuert?

+0

Worauf bezieht sich "dieses"? –

+0

Es geht darum, jQuery-Ereignisse zu lösen. – Francisc

Antwort

0

Angenommen, Sie behandeln zweiten Parameter als Selektor, dann verwenden Sie on falsch. Der zweite Parameter ist ein Selektor (String), an dem Sie ein Objekt übergeben. Die zweiten (Selektor) und dritten (Daten) Parameter sind optional.

Werfen Sie einen Blick hier - http://api.jquery.com/on/

immer Sie dies versuchen.

$menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd'); 
+0

Bälle - du hast Recht. "Selektor: Ein Selektorstring" – user834418

+0

@ShankarSangoli Der Selektor ist optional. Wenn Sie ein Datenobjekt übergeben, ist es in 'event.data' für den ausgelösten Event-Handler verfügbar. – scurker

+0

Ich sehe es nirgendwo als Daten im Code verwendet. – ShankarSangoli

0

Weil off() kein Ereignis auslöst.

Die Methode off() entfernt Event-Handler, die mit .on() verknüpft wurden.

Es sieht aus wie Sie alle Ereignisse entbinden möchten, die zuvor mit dem Menü verbunden waren:

// this removes ALL events 
$menu.off('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd'); 

Wenn Sie wollen nur Ihre Veranstaltung entfernen, siehe this example aus der Dokumentation.

Verwandte Themen