2009-12-20 4 views
2

Je ne peux pas comprendre pourquoi cela me alerter plusieurs fois pour chaque changement ...pourquoi est jquery sélectionnez la charge en boucle

$(function(){ 
    $("#shift_name_<?php print $shift_id;?>").change(function() { 
     $(".alertmessage").load("messages.php?eid="+$("#shift_name_<?php print $shift_id;?>").val(), function(data<?php print $shift_id;?>) { 
      if(data<?php print $shift_id;?>!=''){ 
       alert(data<?php print $shift_id;?>); 
      } 
     }); 
    }); 
    }); 

En fait, il y a quelques-uns qui sont en boucle et donné ids spécifiques en fonction sur une variable php. Cependant, quand j'en change un il m'avertit x nombre de fois où x est le nombre d'exister sur la page ...

Répondre

2

Avez-vous plusieurs divs "alertmessage"? Si c'est le cas, vous les chargez tous et pas seulement un. Personnellement, je ne le ferais pas de cette façon. Essayez plutôt:

<select name="..." id="shift13" class="alert"> 
    ... 
</select> 
<div id="alert13" class="alertmessage shift13"></div> 

avec:

$(function() { 
    $("select.alert").change(function() { 
    $("div.alertmessage." + this.id).load("messages.php", 
     {id: this.id}, function() { 
     alert(this.id); // alert13 
    }); 
    }); 
}); 

est (AMHA) beaucoup de solution plus propre que boucle à travers la création et des gestionnaires d'événements répétitifs. Fondamentalement, encoder les informations dont vous avez besoin dans les éléments. Dans ce qui précède, l'ID de la zone de liste déroulante fournit l'ID de l'appel AJAX et le lie au DIV approprié à charger.

Questions connexes