Eu tenho um modal na minha página. Quando tento chamá-lo quando o Windows carrega, ele imprime um erro no console que diz:
$(...).modal is not a function
Este é o meu 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>
E este é o meu JavaScript para executá-lo quando uma janela é carregada:
<script type="text/javascript">
$(window).load(function() {
$('#prizePopup').modal('show');
});
</script>
Como posso resolver este problema?
javascript
jquery
html
bootstrap-modal
Deus do céu
fonte
fonte
Respostas:
Você tem um problema na ordem dos scripts. Carregue-os nesta ordem:
Porque isso? Como o Bootstrap JS depende do jQuery :
fonte
$
é a função jQuery. Muito provavelmente é aquerySelector
função (nomeada$
) que é exposta pelas ferramentas de desenvolvimento do Google Chrome.Este aviso também pode ser mostrado se jQuery for declarado mais de uma vez em seu código. A segunda declaração jQuery impede que bootstrap.js funcione corretamente.
fonte
O problema é devido a ter instâncias jQuery mais de uma vez. Tome cuidado se estiver usando muitos arquivos com múltiplas instâncias do jQuery. Apenas deixe 1 instância do jQuery e seu código funcionará.
fonte
jQuery deve ser o primeiro:
fonte
Causas para TypeError: $ (…) .modal não é uma função:
Soluções:
Nesse caso, se um script tentar acessar um elemento que ainda não foi alcançado, você receberá um erro. O bootstrap depende do jQuery, então jQuery deve ser referenciado primeiro. Portanto, você deve ser chamado de jquery.min.js e, em seguida, bootstrap.min.js e, além disso, o erro modal de bootstrap é na verdade o resultado de você não incluir o javascript do bootstrap antes de chamar a função modal. Modal é definido em bootstrap.js e não em jQuery. Portanto, o script deve ser incluído desta maneira
No caso de haver várias instâncias de jQuery, a segunda declaração jQuery impede que bootstrap.js funcione corretamente. então, use-o
jQuery.noConflict();
antes de chamar o pop-up modaljQuery aliases evento como
.load
,.unload
ou.error
obsoleto desde o jQuery 1.8.OU tente abrir o pop-up modal diretamente
fonte
mude a ordem do script
Como o bootstrap é um plugin jquery, ele exige que o Jquery seja executado
fonte
Alterar a instrução de importação funcionou. De
para:
fonte
Corre
no projeto para adicionar os tipos jquery em seu projeto Angular. Depois disso, inclua
em seu app.module.ts
Adicionar
em seu index.html logo antes da tag de fechamento do corpo.
E se você estiver executando o Angular 2-7, inclua " jquery " no campo de tipos do arquivo tsconfig.app.json.
Isso removerá todos os erros de 'modal' e '$' em seu projeto Angular.
fonte
Eu encontro esse erro ao integrar bootstrap modal no angular.
Esta é a minha solução para resolver este problema.
Compartilho por quem preocupação.
Primeiro passo você precisa instalar
jquery
ebootstrap
pornpm
comando.Em segundo lugar, você precisa adicionar o
declare var $ : any;
componenteE o uso pode ser usado
$('#myModal').modal('hide');
no método onSave ()Demo https://stackblitz.com/edit/angular-model-bootstrap-close?file=src/app/app.component.ts
fonte
Usar:
fonte
O problema aconteceu comigo apenas na produção, porque importei jquery com HTTP e não HTTPS (e a produção é HTTPS)
fonte
Estou um pouco atrasado para a festa, mas há uma observação importante:
Seus scripts podem estar na ordem certa, mas preste atenção a qualquer
async
s em sua tag de script (como este)<script type="text/javascript" src="js/bootstrap.js" async></script>
Isso pode estar causando o problema. Especialmente se você tiver esse
async
conjunto apenas para ambientes de produção, pode ser muito frustrante raciocinar sobre isso.fonte
Tive dificuldade em resolver este, verifiquei a ordem de carregamento e se o jQuery foi incluído duas vezes via empacotamento, mas essa não parecia ser a causa.
Finalmente consertou fazendo a seguinte alteração:
(antes):
(depois de):
Encontre a resposta aqui: https://github.com/ColorlibHQ/AdminLTE/issues/685
fonte
bootstrap.min.css
jquery.min.js
bootstrap.min.js
fonte