Foros del Web » Programando para Internet » Jquery »

¿Usar On o Live en jQuery 1.8.3?

Estas en el tema de ¿Usar On o Live en jQuery 1.8.3? en el foro de Jquery en Foros del Web. Buenas, He leído por aquí y por aquí que estos métodos son usados adecuadamente en diferentes versiones de jQuery. Bueno, al grano en forma ordenada: ...
  #1 (permalink)  
Antiguo 13/05/2013, 23:05
Avatar de Celcius  
Fecha de Ingreso: febrero-2003
Ubicación: Lima - Perú
Mensajes: 652
Antigüedad: 21 años, 10 meses
Puntos: 5
Pregunta ¿Usar On o Live en jQuery 1.8.3?

Buenas,
He leído por aquí y por aquí que estos métodos son usados adecuadamente en diferentes versiones de jQuery. Bueno, al grano en forma ordenada:

1. Tengo un objeto que creo dinámicamente.
2. Tengo la versión 1.8.3.
3. No puedo "capturar" con "on" el evento "change" del formulario creado dinámicamente.
4. Si puedo "capturar" con "live" el mismo evento "change".

A qué se debe, ya que es incongruente?

El HTML:
Código PHP:
<div id="tipo-user">
                  <
div class="control-group">
                    <
label class="control-label" for="tipo">Tipo</label>
                    <
div class="controls">
                        <
select name="tipo" id="tipo"></select>
                    </
div>
                </
div>
                <
div class="control-group">
                    <
label class="control-label" for="usuario">Usuario</label>
                    <
div class="controls">
                        <
select name="usuario" id="usuario"></select>
                    </
div>
                </
div>
          </
div
El Javascript:
Código PHP:
$(document).on("ready", function(){
        $(
"#manual").on("click", function(){
            if($(
this).is(":checked")){
                $(
"#tipo-user").html('<div class="control-group"><label class="control-label" for="usuario">Usuario</label><div class="controls"><input type="text" name="usuario" id="usuario" placeholder="Usuario" required></div></div>');
            }else{
                $(
"#tipo-user").html('<div class="control-group"><label class="control-label" for="tipo">Tipo</label><div class="controls"><select name="tipo" id="tipo"></select></div></div><div class="control-group"><label class="control-label" for="usuario">Usuario</label><div class="controls"><select name="usuario" id="usuario"></select></div></div>');
                
cargarTipo();
            }
        });
        $(
"#tipo").live("change", function(){
            var 
id_tipo = $(this).val();
            
cargarUsuario(id_tipo);
            
alert("Hola tipo");
        })
        
cargarTipo = function(){
            $(
"#tipo").load("sistema/inc/cargartipo.inc.php");
            
alert("Hola mundo tipo")
        }
        
cargarUsuario = function(id_tipo){
            if(
id_tipo!="#"){
                $(
"#usuario").load("sistema/inc/cargarusuarios.inc.php?id_tipo="+id_tipo);
            }else{
                $(
"#usuario").html("");
            }
        }
        
        
cargarTipo();
    }); 
A ver si me ayudan a despejar esa duda... al final funciona lo que yo quiero pero es incongruente con lo encontrado por ahí.. .gracias.
__________________
"Si tú conocieras el don de Dios, y quién es el que te dice: 'Dame de beber,' tú Le habrías pedido a El, y El te hubiera dado agua viva.
Sn. Juan 4:19
Jesus
  #2 (permalink)  
Antiguo 14/05/2013, 07:12
Avatar de alberto510a  
Fecha de Ingreso: abril-2013
Mensajes: 351
Antigüedad: 11 años, 7 meses
Puntos: 35
Respuesta: ¿Usar On o Live en jQuery 1.8.3?

Hola.
¿El objeto que creas dinamicamente es #manual? Si es así debes usar algun elemento padre para acceder a él no puedes hacerlo directamente me explico:

Código Javascript:
Ver original
  1. ('#elementopadre').on('click',#manual,function(){
  2.  
  3. });

Saludos
  #3 (permalink)  
Antiguo 14/05/2013, 11:37
 
Fecha de Ingreso: junio-2008
Ubicación: Colombia
Mensajes: 207
Antigüedad: 16 años, 6 meses
Puntos: 12
Mensaje Respuesta: ¿Usar On o Live en jQuery 1.8.3?

On en jquery se implementa de dos maneras dependiendo de si el elemento javascript es dinamico o estatico, si es estatico

Código:
$('#micombo').on('change',function(){

   // TODO here

});
Si es dinamico como te lo mencionaron arriba debes usar el objeto padre de contexto , es decir donde aparecera el objeto.

Código:
('#divpadre').on('click','#micombo',function(){
 
    // TODO here

});
Como recomendación siempre usa el on de ahora en adelante, el live ya ha sido eliminado del jquery.
  #4 (permalink)  
Antiguo 14/05/2013, 14:09
Avatar de Celcius  
Fecha de Ingreso: febrero-2003
Ubicación: Lima - Perú
Mensajes: 652
Antigüedad: 21 años, 10 meses
Puntos: 5
Respuesta: ¿Usar On o Live en jQuery 1.8.3?

#manual es un checkbox que permite crear dinámicamente dos objetos de formulario. En caso #manual esté en "on" entonces el "combo" que había es retirado y reemplazado por un "text box" (ambos con el mismo id="usuario")... pasa que los administradores deben ingresar sus datos de usuario y contraseña manualmente y los otros trabajadores utilizando el combo para seleccionar primer el tipo de usuario "vendedor", "caja" y luego su nombre...
__________________
"Si tú conocieras el don de Dios, y quién es el que te dice: 'Dame de beber,' tú Le habrías pedido a El, y El te hubiera dado agua viva.
Sn. Juan 4:19
Jesus
  #5 (permalink)  
Antiguo 14/05/2013, 14:16
Avatar de Celcius  
Fecha de Ingreso: febrero-2003
Ubicación: Lima - Perú
Mensajes: 652
Antigüedad: 21 años, 10 meses
Puntos: 5
Respuesta: ¿Usar On o Live en jQuery 1.8.3?

Y muchas gracias por su explicación... lo curioso es que con la versión de jQuery que les menciono me sirve mas utilizar live que on... por ahí iba mi pregunta pero la respuesta de ambos me ha sido muy útil, no lo sabía... mucha gracias!
__________________
"Si tú conocieras el don de Dios, y quién es el que te dice: 'Dame de beber,' tú Le habrías pedido a El, y El te hubiera dado agua viva.
Sn. Juan 4:19
Jesus

Etiquetas: live
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:16.