Comunidad de diseño web y desarrollo en internet online

problema con funciones jquery

Citar            
MensajeEscrito el 02 Sep 2010 07:37 am
Hola, estoy realizando un proyecto y listo una serie de empresas que tengo en la base de datos, resulta que tengo un botón junto a cada empresa para poder editarla:

Código HTML :

<td class="editar"><span class="editar_empresa"><a href="modificar-empresa.php?id=<?php echo $empresa['id']; ?>"><img src="images/root-cursos-icon-editar.png" alt="editar" /></a></span></td>


Y anexado tengo un archivo con funciones como la que sigue:

Código Javascript :

$(".editar_empresa").click(function(){
      $.ajax({
         type: "GET",
         url: this.href,
         success: function(datos){
            $("#formulario_modificar").html(datos).slideDown();
            }
         });
      return false;
   });


que lo que hace es mostrarme la página modificar-empresa.php en la capa formulario_modificar para realizar la edición in-situ, el caso es que me funciona perfectamente, hasta hace poco que no se que habré cambiado que solo me funciona una sola vez, es decir, puedo editar perfectamente una empresa, pero una vez he editado una vez, si pincho en otra empresa, me carga la página modificar-empresa.php tal cual, no me la mete en la capa correspondiente.

A ver si alguien puede echarme una mano, ya que soy un poco novato en esto.

Por pitufogran

15 de clabLevel



 

safari
Citar            
MensajeEscrito el 02 Sep 2010 09:05 am
No encuentro el botón de editar mi entrada, así que añado otro post, por si fuera importante, decir que el listado donde salen las empresas, lo tengo en un archivo listado-empresas.inc.php, no se si al cargar eso desde un archivo externo puede provocar el fallo.

Tambien decir que cuando edito la empresa, lo hago con la función:


Código :

function ActualizarDatos(){
   var empresa = $('#empresa').attr('value'); 
   var id = $('#id').attr('value'); 

   $.ajax({
      url: 'modificar-empresa.php',
      type: "POST",
      data: "submit=&empresa="+empresa+"&id="+id,
      success: function(datos){
         $("#alertas").html("<h1>" + datos + "</h1>").slideToggle().delay(3000).slideToggle();
         ConsultaDatos();
         $("#formulario_modificar").slideUp();
         }
      });
   return false;
   }

que a su vez actualiza los registros con ConsultaDatos()

Código :

function ConsultaDatos(){
   $.ajax({
      url: 'listado-empresas.inc.php',
      cache: false,
      type: "GET",
      success: function(datos){
         $("#listado_empresas").html(datos);
         }
      });
   }


Mil gracias, a quien pueda colaborar.

Por pitufogran

15 de clabLevel



 

safari
Citar            
MensajeEscrito el 02 Sep 2010 09:21 am
Vale, tengo avances, resulta que cada vez que se recarga el contenido de la capa #listado_empresas con la función ConsultaDatos(), la función

Código :

$(".editar_empresa").click(function(){
deja de funcionar, lo se porque he hecho un mouseover cambiando el color de fondo y cuando carga por primera vez, cambia el color, pero una vez que ejecuta la función una sola vez, ya no actúa sobre la capa...

Vamos que ya casi lo tenemos...

Por pitufogran

15 de clabLevel



 

safari
Citar            
MensajeEscrito el 02 Sep 2010 10:30 am
Sigo con avances, resulta que si

Código :

$(".editar_empresa").click(function(){ 
      $.ajax({ 
         type: "GET", 
         url: this.href, 
         success: function(datos){ 
            $("#formulario_modificar").html(datos).slideDown(); 
            } 
         }); 
      return false; 
   });

lo meto dentro de listado-empresas.inc.php si que funciona, ¿como es eso? no puedo tener todo este tipo de funciones en un .js externo?

gracias

Por pitufogran

15 de clabLevel



 

safari
Citar            
MensajeEscrito el 03 Sep 2010 05:24 pm
A ver si entendí bien.
Lo que dices es que el listado que cargas tiene un span con la clase "editar_empresa" para cada item ¿Cierto?
Si es así, lo que ocurre es que los eventos en jQuery afectan sólo a los elementos cargados en ese momento, al agregar nuevos elementos vía DOM, estos no son afectados por los eventos que ya cargaste.
Para que tus eventos también afecten a los elementos cargados posteriormente a través del DOM debes usar live

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.