Foros del Web » Programando para Internet » Jquery »

Proble con $this dentro una funcion

Estas en el tema de Proble con $this dentro una funcion en el foro de Jquery en Foros del Web. Hola a todos, no estoy muy puesto en JQUERY. Bueno lo que quiero hacer es cambiar el color a una 'label' que esta dos posiciones ...
  #1 (permalink)  
Antiguo 19/06/2020, 05:49
 
Fecha de Ingreso: marzo-2010
Mensajes: 29
Antigüedad: 10 años, 3 meses
Puntos: 0
Pregunta Proble con $this dentro una funcion

Hola a todos, no estoy muy puesto en JQUERY. Bueno lo que quiero hacer es cambiar el color a una 'label' que esta dos posiciones por encima de un input. El cambio de color se hace al hacer keydown en un imput. Os pongo lo que quiero hacer:

Código:
$(this).keydown(function(e) {

            $(this).prev().prev('label').css('color', 'green');

            });


Claro si en lugar de $this dentro de la funcion pongo el id, o clase de la label funciona. Pero tengo 3 inputs con su correspondiente label. Quiero que cada input solo modifique su label.

Se agradece cualquier ayuda
  #2 (permalink)  
Antiguo 19/06/2020, 10:23
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.713
Antigüedad: 12 años, 4 meses
Puntos: 1126
Respuesta: Proble con $this dentro una funcion

Usa el ID sin problemas, los label tienen un atributo FOR que les indica a que INPUT corresponden

Pensando en esa logica lo mas normal es que puedas utilizar siempre el ID, solo tienes que obtenerlo y asignarlo a la variable

Un ejemplo rapido de como se haria

Código HTML:
Ver original
  1. <label for="demo">Hola mundo</label><br>
  2. <input type="text" id="demo">
  3. <br> <br>
  4. <label for="demo2">Desintegrando la realidad</label><br>
  5. <input type="text" id="demo2">

Código Javascript:
Ver original
  1. $('input').on('input', function(){
  2.     $('[for="'+$(this).attr('id')+'"]').html($(this).val());
  3. });

Como ves, el cambio de un input solo afecta a su label, ahora te toca adaptarlo a tus necesidades



La zona horaria es GMT -6. Ahora son las 21:55.