2013-03-27 2 views
0

je suit petit script jQuery:événement jQuery ne pas exécuter immédiatement

 $("#content").on("keyup", "#ID1", function() { 
     $("#ID2").load("loadText", resizeResult()); 
     }); 

     function resizeResult() { 
     if($("#ID2").height() != $("#ID3").height()){ 
      $("#ID3").animate({ 
      height: $("#ID2").height() 
      }, 800); 
     } 
     } 

Mon problème est maintenant que la fonction de redimensionnement sera exécutée uniquement par le NEXT « keyup » événement mais je veux qu'il immédiatement lorsque le "charger" dans ID2 est terminé.

Répondre

0

Appel resizeResult() à la fin de keyupfunction

$("#content").on("keyup", "#ID1", function() { 
     .................. 

     resizeResult(); 
     }); 
+0

aucune amélioration. suppose que le problème est le contenu dynamique de la charge. En fait, je n'utilise pas de chaîne, mais une requête http pour obtenir le contenu de la div. il y a peut-être un délai entre la mise à jour du dom et le calcul de la taille du div. – larz

0

appeler votre fonction de charge document.ready trop ..

$(function(){ 
    $("#ID2").load("loadText", resizeResult()); //<-- call load function in document ready and in keyup function.. 
    $("#content").on("keyup", "#ID1", function() { 
     $("#ID2").load("loadText", resizeResult()); 
    }) 
    ..... 
}); 

et s'il vous plaît assurez-vous que votre URL en charge est bon chemin. .. loadText ne semble pas être un bon chemin

+0

ok je vais le tester. normalement ce code de groovy sera chargé: load ("$ {createLink (action: 'searchDeliveryaddress')}? q =" – larz

+0

ok ... essayez-le ... si l'URL est correcte cela devrait fonctionner .. let – bipen

+0

Approbation obtenue: Lors des premiers événements de touche (les résultats de la recherche sont fournis avec la deuxième lettre), le redimensionnement fonctionne Lorsque je supprime une lettre, les résultats disparaissent, mais le redimensionnement est bloqué à nouveau. Je ne peux pas utiliser la charge sur le document prêt, parce que j'ai deux fonctions différentes chargeant dans le même div, selon le champ de forme utilisé ainsi fpr maintenant je viens d'ajouter $ (document) .ready (resizeResult()); – larz

0

Tout semble bien dans votre code. Mais vous devez laisser les crochets de la fonction resizeResult à l'intérieur de l'événement. Parce que vous ne voulez pas qu'il appelle immédiatement lorsque le navigateur exécute le script. C'est seulement nécessaire lorsque l'événement est déclenché. Donc, vous devriez changer votre code à ce (et mes événements communs aussi natifs, qui recommandent jQuery):

$("#content").keyup(function() { 
    $("#ID2").load("loadText", resizeResult); 
}); 

function resizeResult() { 
    if($("#ID2").height() != $("#ID3").height()){ 
     $("#ID3").animate({ 
     height: $("#ID2").height() 
     }, 800); 
    } 
} 

Pour une une manière d'exécution sûr également préférable d'attendre jusqu'à ce que le HTML soit complètement chargé ou jusqu'à ce que ce balises html sont chargés (code javascript après le conteneur ID3). La première méthode peut être faite en utilisant $.document.ready de jQuery.

Questions connexes