Eu tenho um evento simples de jquery click
<script type="text/javascript">
$(function() {
$('#post').click(function() {
alert("test");
});
});
</script>
e uma referência de jquery definida no site.master
<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>
Verifiquei se o script está sendo resolvido corretamente, consigo ver a marcação e visualizá-lo diretamente no firebug, por isso devo estar sendo encontrado. No entanto, ainda estou recebendo:
$ não está definido
e nenhum do jquery funciona. Eu também tentei as várias variações disso como $ (document) .ready e jQuery etc.
É um aplicativo MVC 2 no .net 3.5, tenho certeza de que estou sendo muito denso, em todos os lugares do google diz para verificar se o arquivo é referenciado corretamente, que eu verifiquei e verifiquei novamente, por favor, avise! : /
javascript
jquery
asp.net-mvc
Paul Creasey
fonte
fonte
Respostas:
Esse erro pode ser causado apenas por uma das três coisas:
Antes de tudo, assegure-se de que script é chamado corretamente, deve parecer
e não deve ter atributos assíncronos ou adiados .
Então você deve verificar o painel de rede do Firebug para ver se o arquivo está realmente sendo carregado corretamente. Caso contrário, será destacado em vermelho e aparecerá "404" ao lado. Se o arquivo estiver carregando corretamente, isso significa que o problema é o número 2.
Verifique se todo o código jQuery javascript está sendo executado dentro de um bloco de código, como:
Isso garantirá que seu código seja carregado após a inicialização do jQuery.
Uma última coisa a verificar é garantir que você não esteja carregando nenhum plug-in antes de carregar o jQuery. Os plug-ins estendem o objeto "$"; portanto, se você carregar um plug-in antes de carregar o núcleo do jQuery, receberá o erro que descreveu.
Nota: Se você estiver carregando um código que não requer a execução do jQuery, ele não precisará ser colocado dentro do manipulador pronto para o jQuery. Esse código pode ser separado usando
document.readyState
.fonte
$(document)
não vai funcionar a menos que tenha uma tag de script incluindo jQuery antes que a declaração ...Pode ser que você tenha sua tag de script chamada antes que o script jquery seja chamado.
Isso resulta como $ não está definido
Coloque o jquery.js antes da tag do script e ele funcionará;) assim:
fonte
@section Scripts
tagPrimeiro, você precisa garantir que o script jQuery esteja carregado. Pode ser de uma CDN ou local no seu site. Se você não carregar isso antes de tentar usar o jQuery, ele informará que o jQuery não está definido.
Isso pode estar no HEAD ou no rodapé da página, apenas carregue-o antes de tentar chamar qualquer outro material do jQuery.
Então você precisa usar uma das duas soluções abaixo
ou
esteja ciente de que muitas vezes $ (document) .ready (function () {// codifique aqui}); não funciona.
fonte
Se a chamada do plugin jQuery estiver ao lado de
</body>
, e seu script for carregado antes disso, você deverá executar seu código após owindow.onload
evento, desta forma:`
portanto, seu código será executado somente após o carregamento da janela, quando todos os ativos tiverem sido carregados. Nesse ponto, o jQuery (
$
) será definido.Se você usar isso:
`
o
$
ainda não está definido no momento, porque é chamado antes do carregamento do jQuery e seu script falhará nessa primeira linha no console.fonte
Eu fiz a mesma coisa e descobri que tinha um monte de
Então eles estavam carregando, mas não havia mais nenhuma dica de por que não estava funcionando. Escusado será dizer que a grafia correta o corrigia.
fonte
Use uma seção de scripts na exibição e no layout principal.
Coloque todos os seus scripts definidos em sua exibição dentro de uma seção Scripts da exibição. Dessa forma, você pode fazer com que o layout principal carregue isso depois que todos os outros scripts tiverem sido carregados. Essa é a configuração padrão ao iniciar um novo projeto da web MVC5. Não tenho certeza sobre versões anteriores.
Visualizações / Foo / MyView.cshtml:
Visualizações / compartilhadas / _Layout.cshtml
Observe como a seção de scripts é renderizada pela última vez no arquivo de layout principal.
fonte
certifique-se de realmente carregar o jquery, este não é o jquery - é a interface do usuário!
Esta é uma fonte de script correta para jquery:
fonte
Como mencionado acima, isso ocorre devido ao conflito da variável $.
Resolvi esse problema reservando uma variável secundária para jQuery sem conflito.
e depois use em qualquer lugar
mais detalhes podem ser encontrados aqui
fonte
Isso significa que sua biblioteca jQuery ainda não foi carregada.
Você pode mover seu código depois de puxar a biblioteca jQuery.
ou você pode usar algo parecido com isto
fonte
Você está usando outras bibliotecas JavaScript? Nesse caso, você provavelmente precisará usar o jQuery no modo de compatibilidade:
http://docs.jquery.com/Using_jQuery_with_Other_Libraries
fonte
Após alguns testes, encontrei uma solução rápida, você pode adicionar no topo da sua página de índice:
funciona muito bem :)
fonte
Recebi a mesma mensagem de erro quando
type="text/javascript"
escrevi incorretamente a referência do jQuery e, em vez de digitar "... javascirpt". ;)fonte
type="text/css"
. Obrigado por salvar minha sanidade!type="javascript"
. Desperdiçou 30 minutos em encontrá-lo.Parece que o jQuery não está carregando corretamente. Qual fonte / versão você está usando?
Como alternativa, pode ser uma colisão de namespace, portanto, tente usar o jQuery explicitamente em vez de usar
$
. Se isso funcionar, você pode usarnoConflict
para garantir que o outro código que está usando$
não seja quebrado.fonte
Esse erro significa que o jQuery ainda não foi carregado na página. O uso
$(document).ready(...)
ou qualquer variante do mesmo não servirá, pois$
é a função jQuery.O uso
window.onload
deve funcionar aqui. Observe que apenas uma função pode ser atribuídawindow.onload
. Para evitar perder a lógica onload original, você pode decorar a função original da seguinte maneira:Isso executará a função que foi originalmente atribuída e
window.onload
, em seguida, executará// YOUR JQUERY
.Consulte https://en.wikipedia.org/wiki/Decorator_pattern para obter mais detalhes sobre o padrão do decorador.
fonte
Eu uso Url.Content e nunca tenho um problema.
fonte
Na solução mencionada - "Uma última coisa a verificar é garantir que você não esteja carregando nenhum plug-in antes de carregar o jQuery. Os plug-ins estendem o objeto" $ "; portanto, se você carregar um plug-in antes de carregar o núcleo do jQuery, poderá receberá o erro que você descreveu. "
Por evitar isso -
Muitas bibliotecas JavaScript usam $ como uma função ou nome de variável, assim como o jQuery. No caso do jQuery, $ é apenas um alias para o jQuery; portanto, toda a funcionalidade está disponível sem o uso de $. Se precisarmos usar outra biblioteca JavaScript junto com o jQuery, podemos retornar o controle de $ back para a outra biblioteca com uma chamada para $ .noConflict ():
fonte
Eu tive esse problema uma vez sem motivo aparente. Isso estava acontecendo localmente enquanto eu estava executando o servidor de desenvolvimento aspnet. Estava funcionando e eu reverti tudo para um estado em que estava trabalhando anteriormente e ainda não funcionava. Procurei no depurador do chrome e o jquery-1.7.1.min.js havia sido carregado sem problemas. Foi tudo muito confuso. Ainda não sei qual era o problema, mas fechei o navegador, fechei o servidor de desenvolvimento e tentei resolvê-lo novamente.
fonte
Coloque o jquery url na parte superior do seu código jquery
como isso--
fonte
Eu tive o mesmo problema e foi porque minha referência ao jQuery.js não estava na tag. Depois que mudei isso, tudo começou a funcionar.
Anthony
fonte
Verifique se o caminho exato do seu arquivo jquery está incluído.
<script src="assets/plugins/jquery/jquery.min.js"></script>
se você adicionar isso na parte inferior da sua página, chame a função JS abaixo desta declaração.
Verifique usando este teste de código,
Paz!
fonte
Temos o mesmo problema .... mas acidentalmente verifiquei as propriedades da pasta e defini algo ...
Você precisa verificar as propriedades de cada pasta que está acessando.
Espero que esta seja a solução ......
fonte
Ao usar o jQuery no asp.net, se você estiver usando uma página mestre e estiver carregando o arquivo de origem jquery, verifique se possui o cabeçalho contentplaceholder após todas as referências ao script jquery.
Eu tive um problema em que qualquer página que usasse essa página mestre retornaria '$ não está definida' simplesmente porque a ordem incorreta estava executando o código do lado do cliente antes da criação do objeto jquery. Portanto, verifique se você tem:
Dessa forma, o código será executado em ordem e você poderá executar o código jQuery nas páginas filho.
fonte
No meu caso, eu estava apontando para o JQuery hospedado pelo Google. Ele foi incluído corretamente, mas eu estava em uma página HTTPS e a chamei via HTTP. Depois de corrigir o problema (ou permitir conteúdo inseguro), ele foi acionado.
fonte
Eu estava tendo o mesmo problema e não conseguia descobrir o que estava causando isso. Recentemente, converti meus arquivos HTML do japonês para UTF-8, mas não fiz nada com os arquivos de script. De alguma forma, o jquery-1.10.2.min.js ficou corrompido nesse processo (ainda não tenho idéia de como). Substituindo jquery-1.10.2.min.js pelo original, foi corrigido.
fonte
parece que se você localizar os arquivos jquery.js na mesma pasta ou em algumas subpastas em que está o arquivo html, o problema do Firebug será resolvido. por exemplo, se o seu html estiver em C: / folder1 /, seus arquivos js deverão estar em algum lugar em C: / folder1 / (ou C: / folder1 / folder2 etc) e também ser endereçados de acordo no documento html. espero que isto ajude.
fonte
Eu tenho o mesmo problema e nenhum caso me resolve o problema. A única coisa que funciona para mim é o arquivo Site.master, o seguinte:
Com src = "<% = ResolveUrl (" ")) ... a carga do jQuery nas páginas de conteúdo está correta.
fonte
Eu tive um problema muito semelhante. No meu aplicativo C # MVC, o JQuery não estava sendo reconhecido. Eu precisava mover o @ Scripts.Render ("~ / bundles / jquery") da parte inferior do meu arquivo _Layout.cshtml para o cabeçalho da seção. Verifique também se você pegou o Jquery como um pacote Nuget se estiver usando o visual studio!
fonte
Existe uma maneira de fazê-lo carregar o javascript automaticamente antes que o restante do código seja executado.
Vá para Views \ Shared_Layout.html e adicione o seguinte
fonte
se a
script
tag tiverdefer
atributo, ela mostra o erroe deve remover o atributo
defer
dascript
tagfonte
Este é o problema comum para resolver isso, você deve verificar algum ponto
Todos os detalhes são dados neste blog, clique aqui
fonte