2012-01-12 4 views
0

Les gars, je suis confronté à un problème de caractère générique dans jquery. S'il vous plaît aider si possible. J'utilise la fonction jQuery like pour lier un clic à un id par exemple. continuer_10, continuer_11. Maintenant, si je clique sur Proceed_10 pour la première fois tout fonctionne bien. Mais si je clique sur une image avec id comme proced_10 de nouveau, alors il exécute deux fois. Ensuite, si je clique sur une autre image de poursuivre avec id poursuivre_5, il exécute trois fois. Voici un extrait de code mineur à examiner:jQuery - caractère générique * - Caching

$("[id*='applybut_']").live('click',function(){ 

     var idfinder = null; var currid = null; 
     idfinder = $(this).attr('id').split('_'); 
     currid = idfinder[1]; 
     $.ajax({ 
      url: "someurl", 
      type: 'POST', 
      dataType: 'json', 
      data: {}, 
      error: function(data){ }, 
      success: function(data){ 
       if(data.success == true) 
       { 
        messyhtml+= '<img src="'+proceedimgsrc+'" id="proceed_'+currid+'" style="cursor:pointer;">'; 
        $("[id*='proceed_']").live('click',function(){ 
         var foostr = $(this).attr('id').split('_'); 
         var fooid = foostr[1]; 
         var barid = $('input[name="bar_id"]:checked').val(); 
          if(fooid != '' && barid != '')  //This loops executes twice,thrice, and so on... 
          { 
           $.ajax({ 
            url: "someurl", 
            type: 'POST', 
            dataType: 'json', 
            data: {'fooid':fooid,'barid':barid}, 
            error: function(data){ }, 
            success: function(data){ 
             if(data.success == true) { 
              // 
             } else if(data.success == false) { 
              // 
             } 
            } 
           }); 
          }        

        }); 
        $(".popcontainer").html(messyhtml); 
       } 
      } 
     }); 
    }); 

Répondre

0

La ligne qui se lit ...

$("[id*='proceed_']").live('click',function(){ 

... est en cours d'exécution à chaque fois qu'un clic est fait comme il est intégré dans le gestionnaire d'événements pour ...

$("[id*='applybut_']").live('click',function(){ 

Le résultat de ceci est que vous souscrivez plusieurs gestionnaires (identiques) à tous proceed_ * éléments - un à chaque fois une étoile * apply_but_ est cliqué. D'où ton comportement.

+0

Merci Holie, je me suis rendu compte que j'ai raté de tuer les anciens événements en direct. –

+0

Merci Aman. Un upvote serait apprécié, mais ce n'est pas pour ça que je suis là :) –

1

Cette ligne a résolu mon problème.

$ ("[id * = '_ procéder']") die();

Questions connexes