J'ai un modal dans ma page. Lorsque j'essaye de l'appeler lorsque Windows se charge, il imprime une erreur sur la console qui dit:
$(...).modal is not a function
Ceci est mon HTML modal:
<div class="modal fade" id="prizePopup" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<h4 class="modal-title" id="myModalLabel">
This Modal title
</h4>
</div>
<div class="modal-body">
Add some text here
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">
Submit changes
</button>
</div>
</div>
</div>
<script type="text/javascript" src="js/bootstrap.js"></script>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
Et voici mon JavaScript pour l'exécuter lorsqu'une fenêtre est chargée:
<script type="text/javascript">
$(window).load(function() {
$('#prizePopup').modal('show');
});
</script>
Comment puis-je résoudre ce problème?
javascript
jquery
html
bootstrap-modal
godheaper
la source
la source
Réponses:
Vous avez un problème dans l'ordre des scripts. Chargez-les dans cet ordre:
Pourquoi ça? Parce que Bootstrap JS dépend de jQuery :
la source
$
la fonction jQuery est. C'est probablement laquerySelector
fonction (nommée$
) qui est exposée par les outils de développement de Google Chrome.Cet avertissement peut également s'afficher si jQuery est déclaré plus d'une fois dans votre code. La deuxième déclaration jQuery empêche bootstrap.js de fonctionner correctement.
la source
Le problème est dû au fait que des instances jQuery ont plusieurs fois. Faites attention si vous utilisez de nombreux fichiers avec plusieurs instances de jQuery. Laissez simplement 1 instance de jQuery et votre code fonctionnera.
la source
jQuery doit être le premier:
la source
Causes de TypeError: $ (…) .modal n'est pas une fonction:
Solutions:
Au cas où, si un script tente d'accéder à un élément qui n'a pas encore été atteint, vous obtiendrez une erreur. Bootstrap dépend de jQuery, donc jQuery doit être référencé en premier. Donc, vous devez être appelé jquery.min.js puis bootstrap.min.js et de plus, l'erreur modale de bootstrap est en fait le résultat du fait que vous n'incluez pas le javascript de bootstrap avant d'appeler la fonction modale. Modal est défini dans bootstrap.js et non dans jQuery. Le script doit donc être inclus de cette manière
Dans le cas où il existe plusieurs instances de jQuery, la deuxième déclaration jQuery empêche bootstrap.js de fonctionner correctement. alors utilisez
jQuery.noConflict();
avant d'appeler le popup modalLes alias d'événement jQuery comme
.load
,.unload
ou.error
obsolètes depuis jQuery 1.8.OU essayez d'ouvrir directement le popup modal
la source
changer l'ordre du script
Parce que bootstrap est un plugin jquery, il nécessite donc Jquery pour s'exécuter
la source
La modification de la déclaration d'importation a fonctionné. De
à:
la source
Courir
dans le projet pour ajouter les types jquery dans votre projet angulaire. Après cela, incluez
dans votre app.module.ts
Ajouter
dans votre index.html juste avant la balise de fermeture du corps.
Et si vous exécutez Angular 2-7, incluez " jquery " dans le champ types du fichier tsconfig.app.json.
Cela supprimera toutes les erreurs de «modal» et «$» dans votre projet Angular.
la source
Je rencontre cette erreur lors de l'intégration du bootstrap modal dans angular.
C'est ma solution pour résoudre ce problème.
Je partage pour qui le souci.
Première étape, vous devez installer
jquery
etbootstrap
parnpm
commande.Deuxièmement, vous devez ajouter un
declare var $ : any;
composantEt utiliser peut utiliser la
$('#myModal').modal('hide');
méthode onSave ()Démo https://stackblitz.com/edit/angular-model-bootstrap-close?file=src/app/app.component.ts
la source
Utilisation:
la source
Le problème m'est arrivé juste en production juste parce que j'ai importé jquery avec HTTP et non HTTPS (et la production est HTTPS)
la source
Je suis un peu en retard à la fête, mais il y a une note importante:
Vos scripts sont peut-être dans le bon ordre, mais
async
faites attention aux s dans votre balise de script (comme ceci)<script type="text/javascript" src="js/bootstrap.js" async></script>
Cela peut être à l'origine du problème. Surtout si vous avez cet
async
ensemble uniquement pour les environnements de production, cela peut devenir vraiment frustrant à raisonner.la source
J'ai eu du mal à résoudre celui-ci, vérifié l'ordre de chargement et si jQuery était inclus deux fois via le regroupement, mais cela ne semblait pas être la cause.
Enfin corrigé en apportant la modification suivante:
(avant):
(après):
J'ai trouvé la réponse ici: https://github.com/ColorlibHQ/AdminLTE/issues/685
la source
bootstrap.min.css
jquery.min.js
bootstrap.min.js
la source