2012-07-20 14 views
6

Zamiast $('.element').toggle(function(){}, function(){});jQuery na ("przełączanie") możliwe?

musiałbym użyć metody .on() na elemencie chcę używać .toggle() temat, ale nie mogę dowiedzieć się, jak określić moją drugą funkcję obsługi zdarzenia:

$('body').on('toggle', '.element', function(){}); 

Gdzie powinienem określić funkcję drugiego handlera dla mojego zdarzenia toggle?

Zrobiłem to tutaj: http://jsfiddle.net/D33f4/, ale nic się nie dzieje przy pierwszym kliknięciu. Naprawdę nie rozumiem, dlaczego.

+0

Możliwe [duplikat] (http://stackoverflow.com/questions/2172614/using-jquery-live-with-toggle-event). – Engineer

+0

jeśli mam go poprawnie, próbujesz zrobić na przełączanie? –

+0

Zrobiłem to tutaj: http://jsfiddle.net/D33f4/, ale nic się nie dzieje przy pierwszym kliknięciu. Naprawdę nie rozumiem, dlaczego. Dowolny pomysł? – Vincent

Odpowiedz

6

Spróbuj użyć tylko przełącznika.

$('#clickme').toggle(
    function(){alert('click 1');}, 
    function(){alert('click 2');} 
); 

W rzeczywistości nie robi nic podczas pierwszego kliknięcia, ponieważ w tym miejscu dołącza tylko obsługę zdarzeń.

EDYTOWANIE:

Nie w pełni przeczytałem post. Mój błąd.

$('body').on('click', '#clickme', function() 
{ 
    var state = $(this).data('state'); 


    switch(state){ 
     case 1 : 
     case undefined : alert('click 1'); $(this).data('state', 2); break; 
     case 2 : alert('click 2'); $(this).data('state', 1); break; 
    } 
}); 
+0

W odpowiedzi określa "Zamiast używać $ (". Element ") .ggle (function() {}, function() {});' –

+0

Tak, moje złe. Byłem bezpośrednio na jsfiddle –

+0

Dziękuję, nie dostałem subtelności, dlaczego nic się nie stało przy pierwszym kliknięciu. Jednak jestem bardzo zaskoczony, że nie ma możliwości użycia .toggle i .on razem. Czy się mylę? – Vincent

Powiązane problemy