2010-05-08 2 views
0

J'ai écrit à cocher/décocher le code d'entrée qui fonctionne bien dans le premier chargement de la page, mais puisque j'ajoute une entrée via ajax puis recharger les entrées avec la nouvelle entrée, la vérification/décochez l'événement ne fonctionne plus, je me demande quel est le problème.Les événements sortent après ajax update

grâce avant

+0

Pouvez-vous poster le code de vérification? –

+0

Enfin, j'ai trouvé la solution, nous pouvons utiliser l'événement live() pour lier la nouvelle entrée, je vous invite à suivre ce fil http://stackoverflow.com/questions/770308/events-not-registering-after-replacewith/ 2838259 –

Répondre

0

C'est le balisage xhtml:

<div style="display: block;" id="regionLocalList"> 
    <div class="itemRegionCountry"> 
     <input type="checkbox" checked="checked" value="1" name="auteur[]" id="aucun"> 
     <label for="tous">no actor</label> 
    </div> 
    <div class="itemRegionCountry"> 
     <input type="checkbox" value="3" name="auteur[]" id="3"> 
     <label>others</label> 
    </div> 
    <div class="itemRegionCountry"> 
     <input type="checkbox" value="510" name="auteur[]" id="510"> 
    <label for=" Nick">Nick</label> 
    </div> 
    <div class="itemRegionCountry"> 
     <input type="checkbox" value="509" name="auteur[]" id="509"> 
     <label for="Craver">Craver</label> 
    </div> 
</div> 

C'est le cocher/décocher le code jQuery

var othercheckboxes = $("#regionLocalList .itemRegionCountry input:not(#aucun)"); 
var aucun = $("#aucun"); 
$("#regionLocalInput").click(function(event) { 
$("#regionLocalList").toggle(); 
              }) 
$(aucun).click(function(event) { 
$(aucun).attr('checked',true); 
$(othercheckboxes).attr('checked',false); 
           }); 
$(othercheckboxes).click(function(event) { 
       if (this.checked){ 
       $(aucun).attr('checked',false); 
           } 
$(othercheckboxes).each(function (i) { 
      if ($(this).is(':checked')) { 
      $(aucun).attr('checked',false); 
      return false; 
      } 
      else 
      { 
      return $(aucun).attr('checked',true); 
      } 
    }); 
}); 

Après avoir ajouté la nouvelle entrée via une boîte de dialogue jQuery UI, je récupère la même xhtml ci-dessus avec une nouvelle entrée, après que je mets à jour le div #regionLocalList avec html retourné avec ajax:

$("#regionLocalList").replaceWith(html); 

La nouvelle entrée est apparu mais l'événement ne fonctionne pas

+0

Enfin, j'ai trouvé la solution, nous pouvons utiliser l'événement live() pour lier la nouvelle entrée, je vous invite à suivre ce fil http://stackoverflow.com/questions/770308/events-not-registering-after-replacewith/2838259 –

Questions connexes