Foros del Web » Programando para Internet » Jquery »

Mover estilo entre elementos con Jquery

Estas en el tema de Mover estilo entre elementos con Jquery en el foro de Jquery en Foros del Web. Saludos Tengo lo siguiente: Código HTML: <div id= "uno" > <span class= "aqui" > Pete 1 </span> <span class= "" > Pete 2 </span> <span ...
  #1 (permalink)  
Antiguo 10/11/2014, 22:51
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
Mover estilo entre elementos con Jquery

Saludos

Tengo lo siguiente:

Código HTML:
<div id="uno">
<span class="aqui">Pete 1</span>
<span class="">Pete 2</span>
<span class="">Pete 3</span>
</div> 
A los 5 segundos, quiero que quede así:

Código HTML:
<div id="uno">
<span class="">Pete 1</span>
<span class="aqui">Pete 2</span>
<span class="">Pete 3</span>
</div> 
A los 5 segundos, quiero que quede así:

Código HTML:
<div id="uno">
<span class="">Pete 1</span>
<span class="">Pete 2</span>
<span class="aqui">Pete 3</span>
</div> 
Y al llegar al último elemento, luego de 5 segundos, vuelva al inicio:

Código HTML:
<div id="uno">
<span class="aqui">Pete 1</span>
<span class="">Pete 2</span>
<span class="">Pete 3</span>
</div> 
Gracias!
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #2 (permalink)  
Antiguo 11/11/2014, 08:31
(Desactivado)
 
Fecha de Ingreso: abril-2013
Ubicación: rosario
Mensajes: 248
Antigüedad: 11 años
Puntos: 17
Respuesta: Mover estilo entre elementos con Jquery

haces una function con settimeout y luego con el selector id = uno buscas el hijo que tenga class=aqui , ahi mismo le haces removeclass y buscas el next elemento y le aplicad esa clase
  #3 (permalink)  
Antiguo 11/11/2014, 17:20
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
Respuesta: Mover estilo entre elementos con Jquery

Gracias diurno10 por la guía.

Logre hacer ésto:

Código HTML:
  setInterval(function() {
    var capa = $('#uno span.aqui');

    capa.removeClass('aqui');
    capa.next().addClass('aqui');
  }, 2000);
El problema que tengo es que luego que llega al ultima elemento, el NEXT deja de funcionar.

Cómo podría hacer para que al llegar al último elemento el addClass lo aplique al primer elemento hijo de #uno ??
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #4 (permalink)  
Antiguo 11/11/2014, 19:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Mover estilo entre elementos con Jquery

Puedes hacerlo así:

Código Javascript:
Ver original
  1. var actual, siguiente, i = 0,
  2.     spans = $("#uno").find("span"),
  3.     total = spans.length;
  4. setInterval(function(){
  5.     actual = $(".aqui");
  6.     if (i == total - 1){
  7.         siguiente = spans.first();
  8.         i = 0;
  9.     }
  10.     else{
  11.         siguiente = actual.next();
  12.         i++;
  13.     }
  14.     actual.removeClass("aqui");
  15.     siguiente.addClass("aqui");
  16. }, 5000);

Declaro dos variables en las que almacenaré al elemento actual en la secuencia (el que posee la clase) y al que le sigue, además de una variable que usaré como contador para saber en qué número de elemento vamos, el total de elementos <span> contenidos en el elemento de id 'uno' y el total que estos representan.

En el temporizador, ejecuto una función cada cinco segundos, en la cual tomo al elemento que posee la clase 'aqui' y lo asigno a actual, luego, verifico el valor del contador; si este es igual al total de elementos <span> menos 1, es decir, si es el último de ellos (recordando siempre que, en una lista de nodos, así como en los arrays y cadenas, la primera posición es cero), el elemento que asignaremos a siguiente será el primero de los <span>, además de reiniciar el valor del contador en cero, pero si todavía no hemos llegado al final, el elemento a asignar a siguiente será el que continúa después del elemento asignado a actual, además, sumamos 1 al contador para seguir avanzando en la secuencia.

Finalmente, retiro la clase al elemento actual y se la asigno al siguiente.

DEMO

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 11/11/2014, 19:43
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
Respuesta: Mover estilo entre elementos con Jquery

Gracias Alexis88

Finalmente logre solventarlo así:

Código HTML:
setInterval(function() {
    var totalsp = ($('#uno span').size()-1);
    var capa = $('#uno span.aqui');

    capa.removeClass('aqui');

    if ((capa.index()>=0) && (capa.index()<totalsp)){
       capa.next().addClass('aqui');
    }else{
       $('#uno span').first().addClass('aqui');     
    }
  }, 2000);
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #6 (permalink)  
Antiguo 11/11/2014, 20:16
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Mover estilo entre elementos con Jquery

Había olvidado que existe el método .index(). Mucho JS nativo me está pasando factura.

Solo como recomendación, trata de declarar a todas las variables que vayas a usar en el mismo bloque de declaraciones, por un tema de eficiencia. Aquí puedes leer una referencia acerca de lo que te digo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: elementos, estilo
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 21:42.