2012-06-02 19 views
10

Una pregunta rápida aquí chicos, me parece que no puede conseguir este.on() y alternar trabajando juntos

$('#wrap').on('toggle', '#image', function(){ 
    <!-- Do stuff --> 
    }); 

para poder tener una palanca dentro de ella? ¿Algunas ideas? He intentado googlear pero sin suerte.

este es el código que estoy tratando de llegar a trabajar con .on, ya que actualmente no se aplica a todos los cambios del hijo elemento de la página, (que tiene #image y #brick)

$("#result_options").toggle(function() { 
     var image_width = $('#image').width()/2; 
     var brick_width = $('#brick').width()/2; 
     $("#image").css("width",image_width); 
     $("#image").css("padding","4px"); 
     $("#brick").css("width",brick_width); 
    },function(){ 
     $("#image").css("width","300"); 
     $("#image").css("padding","8px"); 
     $("#brick").css("width","314"); 
     $(this).html("Smaller Results"); 
    }); 
}); 
+1

posible duplicado de [ Usando jQuery .live con evento de alternar] (http://stackoverflow.com/questions/2172614/using-jquery-live-with-toggle-event) – j08691

Respuesta

24

El problema al que se enfrenta es que no hay un evento toggle; toggle() es un método jQuery. Para implementar un toggle(), con on() Creo que había necesidad de utilizar un evento click, y luego una declaración if para probar si algo ha sido activarse, o alternado-off/no conmutado

$('#wrap').on('click', '#image', function(){ 
    if (!$(this).attr('data-toggled') || $(this).attr('data-toggled') == 'off'){ 
     /* currently it's not been toggled, or it's been toggled to the 'off' state, 
      so now toggle to the 'on' state: */ 
      $(this).attr('data-toggled','on'); 
      // and do something... 
    } 
    else if ($(this).attr('data-toggled') == 'on'){ 
     /* currently it has been toggled, and toggled to the 'on' state, 
      so now turn off: */ 
      $(this).attr('data-toggled','off'); 
      // and do, or undo, something... 
    } 
}); 
+0

@maryisdead: ¡gracias! No me había dado cuenta (o supuse que se usaba como un evento personalizado definido por el usuario). =) –

+1

¡De nada! ¡Gracias por su respuesta! :-) – maryisdead

Cuestiones relacionadas