2012-07-20 9 views
6

En lugar de utilizar $('.element').toggle(function(){}, function(){});jQuery on ('toggle') posible?

que tendría que utilizar el método .on() en el elemento que quiero usar en .toggle() pero no puedo encontrar la manera de especificar la segunda función de controlador de eventos:

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

¿Dónde tendría que especificar la función del segundo controlador para mi evento de alternancia?

Lo hice aquí: http://jsfiddle.net/D33f4/ pero no ocurre nada en el primer clic. Realmente no entiendo por qué.

+0

Posible [duplicado] (http://stackoverflow.com/questions/2172614/using-jquery-live-with-toggle-event). – Engineer

+0

si lo entiendo correctamente, ¿está tratando de hacerlo al alternar? –

+0

Hice esto aquí: http://jsfiddle.net/D33f4/ pero no ocurre nada en el primer clic. Realmente no entiendo por qué. ¿Alguna idea? – Vincent

Respuesta

6

Intente usar solo el botón de alternar.

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

Como es, no hace nada en la primera posición, ya que sólo está adjuntando el controlador de eventos en ese punto.

EDIT:

no haber leído completamente el cargo. Mi error.

$('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

En la respuesta, especifica 'En lugar de usar $ ('. Element'). Toggle (function() {}, function() {});' –

+0

Sí, es malo. Fui directo al jsfiddle –

+0

Gracias, no entendí la sutileza de por qué no sucedió nada en el primer clic. Sin embargo, estoy muy sorprendido de que no haya forma de usar .toggle y .on juntos. ¿Me equivoco? – Vincent