2010-08-28 6 views
1

Dans mon application web j'ai un div qui charge une autre page: $('#main').load('pages/main.php');scénario Jquery ne fonctionne pas à la page chargée

main.php consiste script de validation jquery. Ce script fonctionne si je vais directement au php principal, mais ne fonctionne pas si je vais utiliser cette page sur ma page d'index où main.php est chargé.

Comment puis-je résoudre ce problème?

Merci d'avance.

+0

Utilisez Fiddler/Firebug pour regarder les requêtes HTTP et voir la réponse. Postez ça ici. –

Répondre

1

J'ai fini par utiliser .livequery() pour résoudre EXACTEMENT ce problème! :)

jetez un oeil.

http://plugins.jquery.com/project/livequery/

Inclure le plugin, vous aurez besoin de quelque chose comme ça dans votre index.php

<script type="text/javascript"> 
$(document).ready(function(){ 

      $('#yourInputField') 
       .livequery(function() { 
       $('#yourInputField').YourValidatorPlugin(); 
     }); 
}); 
</script> 
+0

merci. Mais, je vais utiliser .live() - qui est construit en analogique de livequery – dsplatonov

0

.load() ne retire pas les scripts. Cela fait partie de la fonctionnalité par défaut dans le docs

1

comme Inrbob souligne le problème est que le contenu de chargement dans un élément ne charge ni exécuter des éléments de script. La manière appropriée d'appliquer un nouveau script à la page est de mettre en œuvre:

var s = $("<script src='" + script_location_for_validation + "'/>"); 
$("body").append(s); 

Cette Chargera paresseuse le javascript et garder votre code de votre page (important si vous souhaitez utiliser la mise en cache pour améliorer la vitesse à la page plus tard charges). En outre, il est recommandé de placer vos bibliothèques et vos scripts à la fin de votre page afin qu'ils ne bloquent pas les autres téléchargements ou rendus.

+1

J'ai eu quelques difficultés à faire fonctionner cela dans tous les IE mais je retirais des scripts de la tête et du corps; certains étaient des fichiers externes, certains en ligne. Si cette méthode fonctionne pour vous (c'est-à-dire que vous savez toujours quels scripts sont sur la page que vous extrayez), vous pouvez ajouter le code au rappel .load() afin que le script s'exécute dès que les données sont chargées. – lnrbob

+0

bon conseil - merci – dsplatonov

+0

@lnrbob dans tous les projets dans lesquels j'ai travaillé dernièrement IE6 est considéré comme une meule qui a finalement été jetée. IE7 et IE8 devraient le gérer correctement. @dsplatonov comme lnrbob implicite si vous n'avez pas le contrôle du code de l'autre côté de la requête, cette solution ne fait rien pour vous. – Gabriel

1

très facile

  1. Enregistrer toutes les fonctions javascript utilisées main.php dans le fichier externe et l'inclure dans la page en cours.
  2. Charger le contenu dans div.
  3. Appelez la fonction appropriée.

Cela fonctionnera sûrement.

Questions connexes