Je développe une application utilisant Asp.net mvc et jquery. Je voudrais utiliser la même convention de nommage (classes et ids) pour les éléments html dans différentes vues. Dans le cas où je veux charger une vue partielle de manière asynchrone, le morceau de code $ (document) .ready() dans la vue principale perd son utilité car aucune des balises html de la vue patiale et du nommage css n'est reconnue par jquery . Je ne veux certainement pas écrire le même code pour chaque vue. Quelle est la meilleure façon de résoudre ce problème?
Répondre
Vous pouvez utiliser .live()
pour cela, par exemple:
$(".myClass").click(function() { });
Devient ceci:
$(".myClass").live('click', function() { });
.live()
fonctionne d'une manière différente. .click()
lie aux éléments le sélecteur correspondant lorsqu'il a exécuté, généralement document.ready
. .live()
fonctionne en vivant à la racine du DOM, en écoutant les événements à bulles et en exécutant le gestionnaire si l'événement correspondant à la cible de la bulle correspond au sélecteur.
cela fonctionne pour les clics !!! Qu'en est-il des plugins que les éléments des différentes vues partielles utilisent? Par exemple, le plugin jquery dataTable() doit fonctionner pour tous les éléments qui ont une classe = "grid" quelle que soit la vue d'où ils viennent – xantrus
Si je comprends bien votre question, ce n'est pas un problème. Vous pouvez utiliser $ (". Grid"). Live ([eventname], function() {}) ... dans le document prêt à "lier" à n'importe quel événement dans une vue partielle que vous utilisez. –
@ user252160 - Comment chargez-vous ces '$ .ajax'? –
Personnellement, il suffit de charger tout le contenu en utilisant mes propres enveloppes autour de $ .post, et d'initialiser le contenu au besoin. Cela permet également d'unifier les erreurs de gestion, les notifications d'attente, etc.
Les bibliothèques tierces fournissent généralement également un moyen de prétraiter le contenu chargé par ajax. Les vues partielles n'appellent pas document.ready, mais évaluent les scripts à l'intérieur des balises de script en tête. C'est ainsi que vous pouvez forcer l'invocation de scripts spécifiques à une vue partielle.
Une autre façon que j'utilise est les balises html personnalisées sur les formulaires. Par exemple. Et mon gestionnaire $ .post vérifiera cette balise et appellera cette fonction en passant l'instance du formulaire. Cela permet de réduire la portée du script lors du chargement partiel (utile lorsque plusieurs instances de partiel peuvent être chargées sur la même page).
- 1. $ (document) .ready en vue partielle Ruby
- 2. en utilisant la page de vue MVC + $ (document) .ready
- 3. $ (document) contenu .ready et iframe
- 4. jQuery (document) .ready() load() aspx
- 5. Chargement d'une vue partielle dans MVC ASP.Net en utilisant jQuery
- 6. seconde $ (document) événement .ready jQuery
- 7. $ (document) .ready en javascript
- 8. Différentes formes de (document) $ .ready
- 9. jQuery $ (document) .ready et ASP.NET MVC Partiel
- 10. jQuery $ (document) .ready(): plusieurs liaisons à l'événement de chargement de document sont-elles autorisées?
- 11. jQuery $ (document) .ready? et UpdatePanels - quelques problèmes
- 12. ASP.NET MVC chargement partielle vue dans la popup
- 13. Empêcher la vue partielle de se charger
- 14. Quelle est la différence entre $ (document) .ready (function() et (function() $
- 15. JQuery $ (document) .ready ajax load
- 16. Sélectionnez la valeur de liste indéfinie dans $ (document) .ready
- 17. IE7 jQuery (document) .ready() problème
- 18. $ (document) .ready (function() n'est pas appelé
- 19. Chargement de la vue partielle à partir de JQuery ne s'affiche pas dans MVC
- 20. $ (document) .ready() et l'initialisation de jQuery à la fin de la page
- 21. jquery - portée à l'intérieur de $ (document) .ready()?
- 22. $ (document) .ready ne fonctionne pas dans IE
- 23. problème de synchronisation avec jQuery et .ready $ (document)()
- 24. Chargement dynamique d'un script basé sur jQuery et de l'événement ready
- 25. $ jQuery (document) de window.onsvgload .ready et svg-web
- 26. Utilisez $ (document) .ready() pour autoriser l'exécution de la fonction
- 27. Comment utiliser jQuery $ (document) .ready et un UpdatePanel ASP.NET ensemble?
- 28. jQuery: $ (document) .ready() trop lent dans IE
- 29. jQuery FancyBox Iframe - Utilisation de $ (document) .ready dans la fancybox?
- 30. Erreur: $ (document) .ready n'est pas une fonction
J'ai ajouté une solution qui fonctionne pour les événements, dans la plupart des cas, exécutez-vous également des plugins, etc ... Si oui pouvez-vous en savoir un peu plus sur ce que vous devez exécuter sur le contenu chargé dynamiquement? –