Foros del Web » Programando para Internet » Jquery »

Disparar callback slideUp-Down solo una vez y no por cada elemento del selector

Estas en el tema de Disparar callback slideUp-Down solo una vez y no por cada elemento del selector en el foro de Jquery en Foros del Web. Hola, Me he encontrado con un problema: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original $ ( '#a,#b' ) . slideDown ( function ( ) { ...
  #1 (permalink)  
Antiguo 26/12/2015, 05:47
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 11 años, 6 meses
Puntos: 10
Disparar callback slideUp-Down solo una vez y no por cada elemento del selector

Hola,

Me he encontrado con un problema:
Código Javascript:
Ver original
  1. $('#a,#b').slideDown(function(){
  2.             $('#c,#d').toggleClass('e f');
  3.         });

Después de volverme loco buscando por que no se me cambia las clases (e f ) ... ( ya que en el proyecto la cosa es bastante mas compleja ) .... me di cuenta que el callback para slideDown se esta disparando por cada elemento del selector $() y haciéndolo dos veces (en el caso del ejemplo ) volvía a cambiar otra vez dichas clases dándome la impresión que no cambian nunca.

Mi pregunta es la siguiente:
¿Hay alguna forma que el callback dispare solo una vez ?
En la típica chapuza de poner un ... contador una condición ... ya he pensado pero pregunto por si habrá algún modo mas elegante de hacerlo.

Gracias
  #2 (permalink)  
Antiguo 27/12/2015, 13:45
Avatar de autonotel  
Fecha de Ingreso: junio-2003
Ubicación: Vigo
Mensajes: 480
Antigüedad: 21 años, 5 meses
Puntos: 13
Respuesta: Disparar callback slideUp-Down solo una vez y no por cada elemento del sel

Estudia el api jquery en toggle() y slidetoggle(). Hay eventos que se producen al abrir/cerrar durante...

http://api.jquery.com/slidetoggle/
  #3 (permalink)  
Antiguo 28/12/2015, 08:15
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 11 años, 6 meses
Puntos: 10
Respuesta: Disparar callback slideUp-Down solo una vez y no por cada elemento del sel

Gracias autonotel por la sugerencia, he mirado pero hace lo mismo:

Cita:
A function to call once the animation is complete, called once per matched element.
O sea lo dice claro que el callback esta llamado por cada elemento y no realmente al final como otros callback-s

Por el momento he puesto un contador y una condicion que ejecute el codigo que quiero solo la primera vez que pase evitando los demas pasajes en funcion del numero de elementos existentes en el selector $() ... y aunque consideraba chapuza ... es lo unico por ahora que me funciona.

Otra opcion que estoy pensando es crear un plugin jquery al que llamare replaceClass()
Código Javascript:
Ver original
  1. $.fn.replaceClass = function(clase_antigua,clase_nueva){
  2.     $(this).removeClass(clase_antigua)
  3.     .addClass(clase_nueva);
  4.     return this;
  5. });

que aunque se ejecuta varias veces estoy seguro que las clases han cambiado como yo queria porque con el toggleClass ... al repetirse la ejecucion salen cosas raras

Última edición por matake; 28/12/2015 a las 08:28

Etiquetas: cada, callback, disparar, elemento, selector, vez
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:23.