2012-03-29 14 views
4

Ich versuche, alle meine .live() zu .on() zu ändern, da der Prior jetzt veraltet ist.Jquery ändern .Live zu .on,

Ich bin schwer zu verstehen, wie es funktioniert. Bevor ich diesen Code verwendet, und es funktionierte gut ...

$('#lightBoxClose').live('click', function() { 
    $('#lightBox').fadeOut(); 
}); 

Also versuchte ich es, Ändern

$('#lightBoxClose').on('click', function() { 
    $('#lightBox').fadeOut(); 
}); 

Aber es funktioniert nicht, kann jemand bitte erklären, was soll ich zu tun Vielen Dank.

+1

Mögliche doppelte: http://stackoverflow.com/questions/8042576/whats-the-difference-between-jquery-live-and-on –

+0

Siehe Beispiel am unteren Rand von http://api.jquery.com/on/ –

Antwort

9

Sie müssen ein Element binden, die bereits zum Zeitpunkt der Bindung vorhanden ist, die Zielwähler als zweites Argument übergeben. Dieses Element muss ein Vorfahre des späteren Klickziels sein, damit es das bubbled-Ereignis abfangen kann. Diese Technik wird Delegierung genannt.

Zum Beispiel mit dem document Elemente:

$(document).on('click', '#lightBoxClose', function() { 
    $('#lightBox').fadeOut(); 
}); 
+2

Wirklich? Das ist so enttäuschend. Warum bindet es nicht standardmäßig an das Fenster? – Anthony

+0

@Anthony, weil '.on()' nicht nur '.live()' ersetzt, ist es jetzt die Standardmethode um alle Ereignisse zu binden. Es kann also keine Delegierung erzwingen, wenn Sie immer an "Dokument" binden möchten. (Anmerkung: Sie können nicht an das 'window' Objekt binden, da DOM Ereignisse es nicht erreichen.) – bfavaretto

+0

@ bfavaretto: Wenn das der Fall ist, funktionieren verbindliche Kurzschrift-Funktionen wie' .click() ', wenn es angefügt wird ein bestehendes Element? Wie '$ (document). $ ('. My_controllers'). Click (" blah ")'? Es scheint nur ein bisschen viel zu a) muss im Voraus ein Elternteil zu etablieren, wenn jeder Dokument verwenden wird, wenn es nicht für ein bestimmtes Panel entscheidend ist und b) die ereignisspezifischen Kurzschrift Methoden verlieren, die jQuery einfacher machen anschauen und schreiben. Es scheint, als würde es sich von den faulen und schwachen Wegen, mit denen ich mich identifiziere, entfernen. – Anthony