2013-05-29 5 views
0

J'ai fait une bonne recherche et trouvé plusieurs réponses à cette question, en essayant le plus, mais je n'arrive pas à comprendre pourquoi aucune des solutions ne fonctionne.jQuery .load() ne s'appelle qu'une seule fois

Lors de toute soumission dans le formulaire, l'appel load() fonctionne, mais toutes les soumissions ultérieures utilisent des requêtes http standard et non l'appel ajax. Quelqu'un peut-il jeter un oeil à mon code et me dire quelle est la raison pour cela?

$('#cart-container form').on('submit',function() { 
    $(this).ajaxSubmit({ 
     success: cart 
    }); 
    return false; 
}); 

function cart() { 
    var path = '/enter/embed-cart'; 
    $('#cart-container').fadeTo('fast', 0.5).load(path, function() { 
     $('#cart-container').fadeTo('fast', 1); 
    }); 
} 

P.S J'utilise mals up ajax.

Merci

Répondre

4

C'est parce que vous remplacez votre formulaire dans load

vous pouvez utiliser la délégation de l'événement pour le faire fonctionner

$('#cart-container').on('submit','form',function() { 
+0

Pour clarifier : initialement un gestionnaire d'événements est attaché à t Il forme, mais après le premier '.load', cette forme est remplacée par une nouvelle forme (ils peuvent même être identiques, mais ils sont différents). Le nouveau formulaire n'a pas de gestionnaire 'submit'. Il s'ensuit qu'une autre façon de résoudre le problème consiste simplement à réattacher le gestionnaire (à la nouvelle forme) juste après l'effacement. – Jon

+0

Merci pour l'explication! – ccdavies