2010-07-21 3 views
0

J'utilise les appels ASP.NET MVC Framework, jQuery et Ajax pour effectuer un rendu de vue partielle en fonction de l'entrée du client, mon problème est que certains des scripts sont requis par le client. La vue partielle repose sur l'événement ready, déclenché par jQuery.Chargement dynamique d'un script basé sur jQuery et de l'événement ready

Les scripts, à la fois externes et activés dans la vue sont en cours de chargement sans problème, mais comme la page est déjà chargée, l'événement ready n'est jamais déclenché.

est-il un moyen de pré-traiter les scripts (chargé à l'aide $.ajax avec elle est async propriété définie sur false) et faire quelque chose pour obtenir l'événement prêt à tirer? Soit cela ou devrait être un moyen d'informer la page principale qu'une méthode doit être exécutée, en d'autres termes créer un cadre pour appeler dynamiquement les méthodes d'initialisation lorsqu'elles sont extraites du serveur en utilisant Ajax et fonctionnent avec l'événement prêt pour quand ils descendent dans le cadre de la page?

Merci,

Kieron

+2

Si vous essayez de lier une fonction à l'événement ready, par ex. '$ (function);' ou '$ (document) .ready (fonction);' et l'événement a déjà été déclenché (ce n'est pas * vraiment * un événement) ... votre fonction s'exécute immédiatement. L'événement ayant "déjà déclenché" n'est pas le problème ... votre script ne se charge pas du tout s'il n'est pas en cours d'exécution. –

+0

Le script peut être téléchargé à partir du serveur via un appel à $ .ajax ou inséré dans le document à l'aide de la méthode append (selon qu'il s'agit d'un script externe ou d'une partie d'une vue partielle). Êtes-vous en train de dire que l'événement prêt devrait tirer de toute façon ...? – Kieron

+1

oui tous les événements ajoutés à doc prêt après que le document est prêt sont immédiatement déclenchés. – redsquare

Répondre

0

Comme il se trouve, le problème était le mien (un ordre du problème des tags). redsquare A aidé à trier la question/pointez-moi dans la bonne direction - donc le crédit va à lui.

Veuillez voir les commentaires sur la question pour plus de détails.

0

Avez-vous besoin de l'événement prêt à tirer parce que vous devez associer des comportements à ce que vous venez de charger?

Si oui, vous pouvez utiliser la fonction .live() ou le plugin livequery. Avec les deux vous pouvez simplement prédéfinir le comportement basé sur un sélecteur si les choses correspondant au sélecteur existent ou non. Lorsque les éléments correspondants sont chargés, ils adoptent automatiquement le comportement. Pour quelque chose de plus complexe, le plugin livequery déclenche un événement vous indiquant que quelque chose de nouveau correspondant à vos sélecteurs a été ajouté, vous permettant d'exécuter tout le code dont vous avez besoin. Cela vous permettra de conserver tout le code pertinent dans un fichier .js au lieu de se propager entre un certain nombre de vues partielles.

La fonction intégrée en direct(): http://api.jquery.com/live/

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

Questions connexes