2012-06-14 6 views
0

J'ai un bouton sur mon site qui, lorsqu'il est cliqué sur, devrait charger html à l'intérieur d'un conteneur div.Pourquoi ma fonction jquery .load() ne fonctionne-t-elle pas?

J'utilise le code suivant pour le bouton:

<div id="nextnr1"><a href = "#">Next&gt;&gt;</a></div> 

Le code suivant pour exécuter le chargement lorsque quelqu'un clique sur le div:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#nextnr1").mousedown(function() { 
      $("#Container").load("wrappers.php?currenttab=1&shift=1"); 
     }); 
    });​ 
</script> 

Voici le code pour le conteneur où le code HTML est chargé dans:

<div id="Container"></div> 

Le problème est que tout le code ci-dessus est w orking la plupart du temps. Seulement une fois de temps en temps la fonction .load ne fait pas son travail. C'est pour une circonstance similaire parce que c'est à peu près la même page.

J'ai vérifié que quand il y a un clic la fonction a été appelée ainsi: $(document).ready et $("#nextnr1").mousedown(function() {..} font leur travail. Seulement .load est pas fait son travail parce que j'ai vérifié qu'il n'y avait pas de demande HTTP envoyée au serveur.

Si quelqu'un peut m'aider avec ce problème, je serais très très reconnaissant.

MISE À JOUR 1

J'ai essayé la boîte de message (voir code ci-dessous) et il montre que lorsque la charge n'a pas été exécuté, il n'a pas non plus afficher la boîte de message de charge a été effectuée. J'ai aussi vu que, après 2/3 minutes, soudainement la boîte de message est apparue et elle s'est rechargée! Cependant, cela fonctionne mais parfois il y a un énorme retard.

$(document).ready(function() { 
    $("#renextnr2").click(function() { 
     $("#Container").load("wrappers.php?currenttab=2&shift=1", function() { 
      alert("Load was performed."); 
     }); 
    }); 
}); 
+0

'click()' et 'mousedown()' sont deux choses différentes –

+0

J'ai essayé les deux mentionnera que dans la question, merci – BastiaanWW

+0

mis en place un JSFiddle, il est plus facile de vous aider. – deltree

Répondre

0

J'ai ajouté un numéro de randon à la fin de l'URL qui a résolu le problème.

0

d'abord, essayez d'utiliser 'click' au lieu de mousedown.

En second lieu, essayez accrocher l'événement « clic » sur le lien au lieu du div:

<div><a id="nextnr1" href = "#">Next&gt;&gt;</a></div> 
+0

Juste essayé mais il n'a pas résolu le problème – BastiaanWW

0

vous devrez peut-être arrêter l'événement de se propager/traitement par défaut:

<div><a id="nextnr1" href="#">Next&gt;&gt;</a></div> 

<script type="text/javascript"> 

$(document).ready(function() { 
$("#nextnr1").click(function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    $("#Container").load("wrappers.php?currenttab=1&shift=1"); 
});}); 

</script> 
0

première chose commencer avec est d'ajouter une alerte pour déboguer si l'événement est même en cours d'exécution, comme indiqué ci-dessous. Cela donnera un meilleur aperçu de la zone à examiner de plus près pour déterminer le problème.

$('#Container').load('wrappers.php?currenttab=1&shift=1', function() { 
    alert('Load was performed.'); 
}); 
+0

J'ai essayé ceci et cela montre que quand la charge n'a pas été exécutée elle n'a pas non plus montré la boîte de message La charge a été exécutée.J'ai aussi vu que, après 2/3 minutes, soudainement la boîte de msg est apparue et elle s'est rechargée! Cependant, cela fonctionne mais parfois il y a un énorme retard. – BastiaanWW

+0

me semble être une situation difficile à essayer de résoudre. Si j'étais vous, je changerais votre méthode et j'utiliserais plutôt AJAX pour récupérer des informations à charger dans un conteneur. Ceci est plus commun et fonctionnera probablement. – Nick

Questions connexes