2011-09-28 5 views
1

J'ai deux fonctions:problème jquery ajax et

$(function() { 
    $(".deactivated").click(function() {   
      var Container = $(this).parent();    
     var id = $(this).attr("id");    
     var string = 'id='+ id ;  
     $.ajax({ 
      url: "<?php echo site_url('social/activate') ?>", 
      type: "POST", 
      data: string, 
      cache: false, 
       success: function(){ 
        Container.fadeOut(1000, function(){ 
        $(this).load("<?php echo site_url('social/social_icon') ?>", {id: id}, function(){ 
         $(this).hide().fadeIn(700); 
         $(this).click(); 
        }) 
       }); 
      } 
     }); 
     return false; 
    }); 
}); 

$(function() { 
    $(".activated").click(function() {   
      var Container = $(this).parent();    
     var id = $(this).attr("id");    
     var string = 'id='+ id ;  
     $.ajax({ 
      url: "<?php echo site_url('social/deactivate') ?>", 
      type: "POST", 
      data: string, 
      cache: false, 
       success: function(){ 
        Container.fadeOut(1000, function(){ 
        $(this).load("<?php echo site_url('social/social_icon') ?>", {id: id}, function(){ 
         $(this).hide().fadeIn(700); 
        }) 
       }); 
      } 
     }); 
     return false; 
    }); 
}); 

One est d'activer le lien et autre est de le désactiver. Les fonctions fonctionnent correctement, mais lorsque le lien est activé ou désactivé, il ne peut plus être cliqué pour le modifier (la page doit être actualisée pour que les fonctions fonctionnent à nouveau). Qu'est-ce que je dois faire pour le faire fonctionner?

+0

Êtes-vous en train de changer la classe des liens ?! désactivé => activé et activé => désactivé –

Répondre

3

Change:

$(".activated").click(function() { 
$(".deactivated").click(function() { 

Pour:

$(".activated").live('click',function() { 
$(".deactivated").live('click',function() { 
1

Vous semblez remplacer le conteneur et les éléments qu'il contient, de sorte que les éléments qui ont été liés aux événements click ont été supprimés.

Vous pouvez corriger cela en changeant vos gestionnaires d'événements à utiliser live:

$(".deactivated").live('click', function() { 

et

$(".activated").live('click', function() { 
0

On dirait que vous remplacez les liens sur lesquels vous cliquez pour perdre les liaisons d'événements.

Modifier la .cliquez() à utiliser .live (clic ..

$(".deactivated").live('click', function() {