Foros del Web » Programando para Internet » Jquery »

pierdo this en jquery

Estas en el tema de pierdo this en jquery en el foro de Jquery en Foros del Web. Hola a todos: teniendo esta simple funcionalidad Código PHP: $( document ). ready (function(){     $( "#div1 a" ). attr ( "class" ,  "luces" );     $( "#div1 a" ...
  #1 (permalink)  
Antiguo 12/01/2010, 09:59
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
pierdo this en jquery

Hola a todos:
teniendo esta simple funcionalidad
Código PHP:
$(document).ready(function(){
    $(
"#div1 a").attr("class""luces");
    $(
"#div1 a").click(CLEAR.updateLinks);
});
CLEAR = {
    
updateLinks:function() {
        
CLEAR.clean();
        return 
false;
    },
    
clean: function() {
        $(
"#div1 a").removeClass("luces");
        $(
this).addClass("luz");
    }
}; 
Pierdo el this en la ultima linea, cuando quiero agregar la clase "luz".
¿como accedo al enlace, desde esa funcion clean?
Código PHP:
<div id="div1">
    <
a href="page1.htm">Enlace 1</a>
    <
a href="page2.htm">Enlace 2</a>
</
div
__________________
I am Doyle please insert code.
  #2 (permalink)  
Antiguo 12/01/2010, 10:21
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: pierdo this en jquery

es porque this dentro de CLEAN es CLEAN.
__________________
I see dead pixels
  #3 (permalink)  
Antiguo 12/01/2010, 10:59
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: pierdo this en jquery

ok , pero como puedo lograr hacer referecia al enlace desde dentro de CLEAN...
__________________
I am Doyle please insert code.
  #4 (permalink)  
Antiguo 12/01/2010, 11:03
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: pierdo this en jquery

Bien, lo logré, funciona como yo deseo, pero quisiera saber si la forma en que lo estoy utilizando es lo adecuado.
Código PHP:
CLEAR = {
    
updateLinks:function() {
        
CLEAR.clean(this);
        return 
false;
    },
    
clean: function(x) {
        $(
"#div1 a").removeClass("luces");
        $(
x).addClass("luz");
    }
}; 
__________________
I am Doyle please insert code.
  #5 (permalink)  
Antiguo 12/01/2010, 11:08
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: pierdo this en jquery

Si, es una forma de hacerlo. Yo acostumbro a tener una propiedad en donde guardo una instancia de quien llamo a esa función. Pero solo son formas distintas de hacerlo.
__________________
I see dead pixels
  #6 (permalink)  
Antiguo 12/01/2010, 11:27
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: pierdo this en jquery

Estuve intentando aplicar tu forma, pero como soy nuevo en esto no me sale.
Código PHP:
CLEAR = {
    var 
elemento,
    
updateLinks:function() {
        
elemento this;
        
CLEAR.clean();
        return 
false;
    },
    
clean: function() {
        $(
"#div1 a").removeClass("luces");
        $(
elemento).addClass("luz");
    }
}; 
Como quedaria?
Gracias!
__________________
I am Doyle please insert code.
  #7 (permalink)  
Antiguo 12/01/2010, 11:57
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: pierdo this en jquery

Código Javascript:
Ver original
  1. var CLEAR = {
  2.      elemento : null,
  3.      updateLinks : function($this) {
  4.           this.elemento = $this;
  5.           this.clean();
  6.           return false;
  7.  
  8.     },
  9.      clean: function() {
  10.         $("#div1 a").removeClass("luces");
  11.         this.elemeto.addClass("luz");
  12.     }
  13.  
  14. }
  15.  
  16. $("#div1 a").click(function(){
  17.     CLEAR.updateLinks($(this));
  18. });
__________________
I see dead pixels

Etiquetas: pierdo
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 12:09.