2009-08-12 11 views
1

Après l'obtention d'une nouvelle page avec $ .get aucun de la javascript se déroulera sur la nouvelle page.Question sur Javascript (Jquery) et GET

Existe-t-il un moyen de rendre javascript aussi la nouvelle page?

Un grand merci

  • Dorjan

Edit: Exemple:

$(function() { 
    $('.viewPage').click(function() { 
     $('#mainarticle').fadeOut('slow') 
     $.get($(this).attr('href'), { js: "1" }, function(data) { 
      $('#mainarticle').html(data).fadeIn('slow'); 
     }); 
     return false; 
    }); 
}); 

Maintenant, cela fonctionne très bien cependant, les balises d'ancrage de la nouvelle page ne déclencheront pas (permet de dire qu'il a une .viewPage).

J'espère que cela clarifie le problème.

Répondre

2

Vous devez lier les événements à vos points d'ancrage à l'aide live:

$('a.something').live("click",function() { 
    alert('this will still work after a.something has been replaced via ajax'); 
}); 

Une autre façon en utilisant le rappel de .get de $:

$.get("page.html", function(data) { 
    $('#someDiv').html(data); 
    $('a.something').click(function() { 
     alert('this will still work after a.something has been replaced via ajax'); 
    }); 
}); 

Maintenant que je l'ai vu votre code:

$(function() { 
    $('.viewPage').live("click",(function() { 
     $('#mainarticle').fadeOut('slow') 
     $.get($(this).attr('href'), { js: "1" }, function(data) { 
      $('#mainarticle').html(data).fadeIn('slow'); 
     }); 
     return false; 
    }); 
}); 
+0

Juste tester maintenant, semble que ce soit le bon si! – Dorjan

+0

Parfait! J'ai dû mettre à jour mon jQuery (j'utilisais 1.2.2 ce qui explique pourquoi je n'ai pas trouvé ça!) Fantaisie, merci Karim. – Dorjan

+0

Je l'ai effectivement fait avant que je vois votre mise à jour (puisque je devais télécharger le nouveau jQuery, vos premières instructions étaient parfaites mon ami :)) – Dorjan

0

Yep; il existe une autre méthode jquery ajax qui récupérera le script renvoyé de votre page et l'exécutera. Vérifiez les documents jquery.

+0

Hmm ... Je vais jeter un coup d'oeil. Juste pour nous assurer que nous sommes sur la même page, le jQuery attend un clic sur un tag d'ancrage. Mais sur la nouvelle version de la même page (disons un ajax reload) toutes les ancres sont ignorées. Je n'ai pas réussi à trouver la bonne fonction mais je suis en train de lire entre vérifier ici. – Dorjan

+0

Je viens de trouver jQuery.getScript (url, [callback]) que je pense être ce que vous vouliez dire, mais ce n'était pas ce que je voulais dire. Je vais clarifier la question. Merci bien! – Dorjan