2012-10-10 2 views
0

J'ai un événement Jquery qui ne déclenche pas à chaque fois:événement Jquery est pas toujours déclenché

http://jsfiddle.net/LphjL/

Mon code:

thisWebsite = websiteInitialization(); 

function websiteInitialization() { 
    companyName = "name"; 
    var thisWebsite = new websiteConstructor(companyName); 
    return thisWebsite; 
} 

function websiteConstructor(companyName) { 
    this.companyName=companyName; 
} 

function ajaxUpdateDB(websiteElement, value) { 
    return $.post('/echo/html/',{html: "<p>Text echoed back to request</p>",delay: 3} 
       ,function(a){} 
       ,"json" 
     );  
} 

function updateDatabase(websiteElement, value) { 
    var promise = ajaxUpdateDB(websiteElement, value); 
    promise.complete(function() { 
     thisWebsite[websiteElement] = value; 
    }); 
} 


$(document).ready(function() { 

    $(".websiteElement").change(function() { 
     updateDatabase($(this).attr('id'), $(this).val()); 
    }); 

    $("#infos").click(function() { 
     htmlCode = "<input class='websiteElement' id='companyName' type='text' value='"+thisWebsite.companyName+"'>"; 
     $("#panel-content").html(htmlCode); 
    }); 

    $("#homepage").click(function() { 
     htmlCode = "homepage"; 
     $("#panel-content").html(htmlCode); 
    }); 

}); 
​ 

Comme vous pouvez le voir dans le jsFiddle, le premier temps que le champ de saisie est mis à jour, l'Ajax est déclenché, mais:

si vous cliquez sur 'Homepage', puis cliquez sur 'Generic infos' et mettez à nouveau à jour le champ de saisie temps l'Ajax n'est pas déclenché: $(".websiteElement").change l'événement n'est pas appelé la deuxième fois.

Répondre

1

Vous devez lier l'événement à l'aide de la délégation d'événement ou relier l'événement après avoir remplacé l'élément. Ci-dessous l'option de la délégation de l'événement:

$("#panel-content").on("change",".websiteElement",function() { 
    updateDatabase($(this).attr('id'), $(this).val()); 
}); 

Si l'événement est lié directement sur l'élément, l'événement sera perdu quand est remplacé/supprimé l'élément.

Questions connexes