Foros del Web » Programando para Internet » Jquery »

Load en jquery y problema de funcionamiento de otras funciones

Estas en el tema de Load en jquery y problema de funcionamiento de otras funciones en el foro de Jquery en Foros del Web. Hola, tengo un problema al utilizar load para generar contenido html. Luego de utilizarlo deja de funcionar otras partes del codigo si ya estaban andanndo. ...
  #1 (permalink)  
Antiguo 30/07/2011, 10:19
 
Fecha de Ingreso: septiembre-2009
Mensajes: 67
Antigüedad: 14 años, 7 meses
Puntos: 2
Load en jquery y problema de funcionamiento de otras funciones

Hola, tengo un problema al utilizar load para generar contenido html. Luego de utilizarlo deja de funcionar otras partes del codigo si ya estaban andanndo.

Genero contenido para un select dinamicamente, y luego de que se carga (correctamente) ya no responde a funciones que si lo hace iniciarlmente.

Lo explico mejor, estas son las funciones:

$("#combo_arbitros_1").change(function(evento){
var id_arbitro = $(this).val();
if (id_arbitro == 'N') {
// no oficial
$("#no_oficial_1").css("display", "block");
}else{
$("#no_oficial_1").css("display", "none");
}
});

$(".orden_arbitros").change(function(evento){
var orden = $(this).val();

$("#contenedor_arbitro_1").load(base_url+"carga/arbitro_tarjeta/procesar_contenido_combo_arbitro/combo_arbitros_1/"+orden);
});

y el html

<td colspan="2" class="l" id="contenedor_arbitro_1">
<select name="combo_arbitros_1" id="combo_arbitros_1">
<option...</option>
</td>

El evento change de combo_arbitros_1 funciona y oculta o no como indica la funcion. Ahora al "recargar" el select (que lo hace correctamente) y volver a cambiar el valor del select, ya no invoca a este evento $("#combo_arbitros_1").change...

alguna idea de por donde viene el problema? repito ambas funciones por separado andan, juntas no.

Muchas gracias por su tiempo.
  #2 (permalink)  
Antiguo 30/07/2011, 11:16
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Load en jquery y problema de funcionamiento de otras funciones

Me cuesta un poco seguir tu post, tratá de envolver los códigos usando la opción "highlight" que tenés cuando posteás en el foro.

Te explico lo que está sucediendo. Primero creás un <select> con ID "combo_arbitros_1" y le asignás una función para cuando éste combo dispare el "change". Después destruís este combo y creás uno nuevo con la misma ID (por más que tenga la misma ID, no deja de ser un <select> diferente) por lo que la función que le habías asignado al <select> anterior ya no funcionará con este nuevo.

jQuery tiene para estos casos el método .delegate() que asociará la función a un evento para cualquier elemento que cumpla con el selector (por más que este sea creado después).

Probá haciendo algo así:

Código Javascript:
Ver original
  1. $("#contenedor_arbitro_1").delegate("#combo_arbitros_1","change",function(evento){
  2.     var id_arbitro = $(this).val();
  3.     if (id_arbitro == 'N') {
  4.         $("#no_oficial_1").show();
  5.     }else{
  6.         $("#no_oficial_1").hide();
  7.     }
  8. });

Espero esté claro.
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 30/07/2011, 11:32
 
Fecha de Ingreso: septiembre-2009
Mensajes: 67
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Load en jquery y problema de funcionamiento de otras funciones

Gracias por tu respuesta Naahuel!!

Lo solucione de esa manera. Te pido disculpas por la forma de poner el codigo (desconocia la funcionalidad, lo tendre presente para la proxima).

De paso una consulta extra, ¿algun libro o documentacion que recomiendes para conocer a fondo jquey? mis conocimientos son mas que basicos y me gustaria interiorizarme.

Gracias, saludos.
  #4 (permalink)  
Antiguo 30/07/2011, 11:36
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Load en jquery y problema de funcionamiento de otras funciones

De nada :)

Realmente no sé, para ser honesto yo al único lugar que recurro es a http://docs.jquery.com
__________________
nahueljose.com.ar

Etiquetas: Ninguno
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 23:22.