Yakalanmayan ReferenceError: $ tanımlı değil mi?


658

Bu kod nasıl ortaya çıkıyor?

Yakalanmayan ReferenceError: $ tanımlanmamış

daha önce ne zaman iyiydi?

$(document).ready(function() {
    $('#tabs > ul').tabs({ fx: { opacity: 'toggle' } });
    $('#featuredvid > ul').tabs();
});

Sekmelerdeki sonuçlar artık kapanmıyor.

Başlıkta jQuery referansı verilmiştir:

<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/sprinkle.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-ui-personalized-1.5.2.packed.js"></script>

<script language = "JavaScript" type = "text / javascript" src = "<? php echo get_option ('siteurl')?> / js / jquery-1.2.6.min.js"> </script> Bunu al top
captainsac

Benim durumumda, JQuery altbilgi bölümünde, bu yüzden ilk olarak JS işlevi çağrıldı.
Daniel Beltrami

Bu sorunuza cevap veriyor mu? ReferenceError: $ tanımlı değil
Brynn

Yanıtlar:


688

Öncelikle jquery komut dosyalarına yapılan referansları koymalısınız.

<script language="JavaScript" type="text/javascript" src="/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/jquery-ui-personalized-1.5.2.packed.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/sprinkle.js"></script>

27
Sadece bunun açık olduğundan emin olmak için: jquery-ui komut dosyasının başvurusunu jquery komut dosyasının kendisinden önce koyamazsınız. Sorunu bana çözen şey buydu: önce jquery-xxxmin.js, sonra jquery-ui-xxxxxx.js.
Wagner da Silva

26
2 yıl sonra, hala cevap "işaretli değil") Bu makalede , bu ve bu hatanın oluştuğu 4 yaygın durum daha açıklanmaktadır.
Özbekjon

2
@Uzbekjon Bu benim için çözdü. Senaryoya yol yanıldım biri benim ait HTMLdosyalar.
Adam Jensen

@Jeremy, çok teşekkürler. Ayrıca herhangi bir kısmi görünümden (mvc) önce koyun, böylece kısmi herhangi bir komut dosyası için kullanılabilir.
Andrew Day

1
@Uzbekjon neredeyse 10 yıldır ve hala işaretli değil. Makale bağlantısını sağladığınız için teşekkür ederiz.
Modo

235

JQuery JavaScript eklenmeden önce hazır fonksiyonunu çağırıyorsunuz. Önce jQuery referansı.


30
@RamSharma Aslında, bu doğru cevap. Sorunu çözmek için başka bir şeye ihtiyacınız yok.
Derek 朕 會 功夫

Evet. Bu benim sorunumdu. Sadece benim js dosya referans sonra jquery vardı. D'oh!
dogonaroof

Benim durumumda, anahtar ertelemeyi <script src = "/ js / jquery-1.2.6.min.js" defer> </script>
Charden Daxicen

123

Bunu benim için çözen şey buydu. Başlangıçta Google'a gittim ve jQuery için önerilen snippet'ini CDN sayfalarına yapıştırdım:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

Pasajı içermez HTTP:veya HTTPS:içinde srcöznitelik ama bunu değiştirdi bu yüzden benim tarayıcı, Firefox, gerekli: düzenlemek: bu sıra Google Chrome ile benim için çalıştı

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

Sonra işe yaradı.


13
Kesin olarak Google snippet'i / örneği doğrudur - src özelliği protokol içermeyen bir URL'dir; bu, tarayıcının arama sayfasının protokolünü (HTTP / HTTPS) kullanması gerektiği anlamına gelir. Bkz. Paulirish.com/2010/the-protocol-relative-url . Sayfanız SSL üzerinden sunuluyorsa ve komut dosyaları sunulmuyorsa, karışık içerik uyarılarını önlemek için en iyi yöntem budur.
pwdst

12
Buradaki yaygın bir sorun, büyük olasılıkla, protokole bağlı URL'lerin geliştirme sırasında kullanılması ve güneşli bir günde yerel bir dosyadan bir sayfa yüklemeye çalışmanızdır. Tarayıcınız iyimser bir şekilde yüklemeye çalışacak file://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.jsve ağ konsolunda neden görünmediğini merak edeceksiniz.
Pieter Ennes

teşekkürler @PieterEnnes, bu benim için aynen böyle oldu. Cevap veren için teşekkürler!
jwg

43

Özel komut dosyanız jQuery eklentisi tarayıcıya yüklenmeden önce yüklenirse, bu tür bir sorun oluşabilir. Yani, jQuery eklentisini çağırdıktan sonra her zaman kendi JavaScript veya jQuery kodunuzu saklayın, böylece bunun çözümü:

İlk olarak bağlantıyı GoogleApis'te barındırılan jQuery dosyasına veya http://jquery.com/download/ adresinden indireceğiniz yerel bir jQuery dosyasına ve sunucunuzdaki ana bilgisayara ekleyin:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

veya jQuery için herhangi bir eklenti. Ardından özel komut dosyası bağlantınızı veya kodunuzu ekleyin:

<script src="js/custom.js" type="text/javascript"></script>

3
If your custom script is loaded before the jQuery plugin is loaded to the browser then this type of problem may occur mükemmel cevap .. benim durumumda senaryo altbilgi oldu
echoashu

41

Benim durumumda .jsjQuery script linkinden önce dosyamı koyuyordum, .jsjQuery script linkinden sonra dosyayı koymak sorunumu çözdü.

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="exponential.js"></script>

Bunu jschart'ımı düzeltmek için kullandım.
indofraiser

Bu sorunu düzeltti, .js dosya jQuery komut dosyası bağlantısının önüne konmalıdır.
Bilimsel Yöntem

27

Tamam, sorunum farklıydı - Chrome'daki Doküman Güvenlik modeliydi .

Buradaki cevaplara baktığımda, $(document).ready()vb. İşlevlerini çağırmadan önce bir şekilde jquery dosyalarımı yüklemiyordum . Ancak, hepsi doğru pozisyondaydı.

Benim durumumda, bunun nedeni içeriğe güvenli bir HTTPS bağlantısı üzerinden erişiyordu, ancak sayfa Google'da vb. CDN tarafından barındırılan verileri indirmeye çalışıyordu. Çözüm, bunları yerel olarak depolamak ve sonra CDN her seferinde.

Düzenleme : Bunu yapmanın diğer yolu tüm CDN tarafından barındırılan şeyler http: // yerine https: // olarak bağlantı kurmaktır - sonra model şikayet etmiyor.


5
Ayrıca, protokolü bağlantıların dışında bırakabileceğinizi ve içeriğe bağlı olarak uygun olanı seçeceğini unutmayın (hem http hem de https sürümlerinin var olduğu varsayılarak). Bkz. Stackoverflow.com/a/3622615/4332
Adrian Mouat

Evet. Bu benim sorunumu çözdü, ben böyle bir Url komutları yüklüyordu cd // cdnjs.cloudflare.com / ajax / libs / jquery / 1.12.0 / jquery.min.js´. ´ cdnjs ... ´ kullanmak harika çalışıyor
user9869932

25

Eğer script.You bu Aşağıdakilerden herhangi ekleyebilir başlamadan önce kütüphane ekle CDN başlatmak için.

Google:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

Microsoft,

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>

jQuery

Başka bir Jquery cdn sürümü istiyorsanız bu bağlantıyı kontrol edin .

Bundan sonra:

<script type="text/javascript">
$(function(){
    //your stuff
});
or
$(document).ready(function(){
    //your stuff
});    
</script>

Wordpress:

<script type="text/javascript">
var $ = jQuery;
jQuery(document).ready(function($){
     //your stuff
});
</script>

19

Wordpress'te ise, değiştirmek gerekebilir

$(document).ready(function() {

için

jQuery(document).ready(function($){

veya ekle

var $ = jQuery;

önce

$(document).ready(function() {

19

Aynı problemi yaşadım ve yukarıdaki çözümlerin hiçbiri yardımcı olmadı. Ancak, ben sadece .cssdosyaları sonra dosyaları bağladı .jsve sorun mucizevi bir şekilde kayboldu. Bu yardımcı olur umarım.


13
İlk olarak, daha iyi sayfa oluşturma performansı için CSS dosyalarını her zaman JS dosyalarından önce bağlamanız gerekir. İkincisi, css ve js dosyalarının sırasının geçerli durum üzerinde hiçbir etkisi olmamalıdır.
Özbekjon

12
"Sorununuzu düzelten sorununuzu çözmemeli ve sorununuzu düzelten şeyi yapmamalısınız."
Andrew

15

Senaryomumu zaman uyumsuz hale getirmek istedim . Sonra unuttum ve canlı yayına başladığımda [custom] .js dosyası jQuery.js'den önceki sürenin yalnızca% 50'sini yükledi.

Ben değiştim

<script async src="js/script.js"></script>

için

<script src="js/script.js"></script>

14

Benim durumumda komut dosyası çağrılarının sırası yanlış olduğu için bu referenceError vardı. Sırayı değiştirerek çözüldü:

<script src="js/index.js"></script>
<script src="js/jquery-1.10.2.js"></script>

için

<script src="js/jquery-1.10.2.js"></script>
<script src="js/index.js"></script>

1
Çoğunlukla bu, '$' için bir referans hatası oluştuğunda da bulduğum problemdi
Dipak

9

Aynı sorunu vardı ve ben kodumda bulunan tüm javascript kodları üstünde jQuery koyarak çözüldü.

Bunun gibi bir şey:

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="js/app.js" type="text/javascript"></script>
<script src="js/form.js" type="text/javascript"></script>
<script src="js/create.js" type="text/javascript"></script>
<script src="js/tween.js" type="text/javascript"></script>

Umut gelecekte birine yardım edebilir.


8

Sen çağırıyorsun ready()JQuery JavaScript dahil edilmeden önce işlevi . Önce jQuery referansı.

ASP.NET MVC'deyseniz, JS kodunuzun ne zaman oluşturulması gerektiğini belirtebilirsiniz:

1, sizin de page.cshtmlsargı senin <script>bir bölüme etiketi ve ona bir isim vermek, kullanımına ortak adı 'komut' is:

@section scripts {
    <script>
        // JS code...
    </script>
}

2, senin de _Layout.cshtmlsayfa eklenti @RenderSection("Scripts", required: false)size jQuery kaynağı göstermelidir sonra koymak için emin olun, bu JS kodunun sonra jQuery daha işlemek yapacaktır.


6

Bunu .Net'te yapıyorsanız ve komut dosyasının doğru şekilde referansını alıyorsanız ve jQuery iyi görünüyorsa, kullanıcılarınızın komut dosyasına erişebildiğinden emin olun. Üzerinde çalıştığım projede (bir iş arkadaşı) anonim kullanıcılara erişimi reddeden web.config vardı. Üzerinde çalıştığım sayfaya anonim kullanıcılar erişebilirdi, bu yüzden komut dosyasına erişemediler. Aşağıdakileri web.config dosyasına bıraktı ve tüm dünyada haklıydı:

  <location path="Scripts">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

6

Benim durumumda bir yazım hatasıydı, ters eğik çizgiyi unuttum ve kaynağa yanlış atıfta bulunuyordum.

Önce src="/scripts/jquery.js"

Sonra    src="scripts/jquery.js"


5

Kaynak dosya jquery-1.2.6.min.jsadı jQuery komutu $()daha önce yürütülmez <..src='jquery-1.2.6.min.js'>.

Lütfen <.. src="/js/jquery-1.2.6.min.js..">önce çalıştırın ve src yolunun doğru olduğundan emin olun, ardından jquery komutunu yürütün

$(document).ready(function() 

5

Bu daha önce başıma geldi.

Nedeni android'i bir JS ile bir web görünümüne bağlamamdı. Ve tırnak işaretleri olmadan bir parametre gönderdim.

js.sayHello(hello);

ve bunu

js.sayHello('hello');

işe yaradı.


Hiçbir parametrenin tırnak işaretleri olmadan ne anlama geldiğini bilmiyorum.
Aluan Haddad

Freemarker bir sorun vardı ve nedeni tek tırnak olmaması, bu yüzden değeri bir dize gibi değil, bir değişken olarak tedavi edildi
torina

4

JavaScript dosyanız eksik olduğundan bu hata oluştu. JavaScript dosyasını <head>etiketin içine eklemeniz yeterlidir. Örneğe bakın:

<script src="js/sample.js" type="text/javascript"></script>
<link href="css/sample.css" rel="stylesheet" type="text/css" />

veya etikete aşağıdaki kodu ekleyin:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

4

Hata aşağıdaki iki senaryoda da ortaya çıkacaktır.

  1. HTML dosyasında @section komut dosyaları öğesi eksik
  2. DOM öğelerine erişilirken hata oluştu. Örneğin, DOM öğesine erişim $ (". Js-toggle") yerine $ ("js-toggle") olarak belirtilir. Aslında dönem eksik

İzlenecek 3 şey - gerekli komut dosyalarının eklendiğini kontrol edin, gerekli sırayla eklenip eklenmediğini ve Java Komut Dosyanızdaki üçüncü sözdizimi hatalarını kontrol edin.


Evet. ve kimlik özellikleri için $ ('# someDiv')
cagcak

3

Doh! Etiketlerimde jquery başvurusunun bozulmasına neden olan karışık alıntılar yaptım. Chrome'da bir inceleme yapmak, dosyanın düzgün bir şekilde bağlanmadığını görmemi sağladı.


3

Benim durumumda bunu dahil etmeyi unuttum:

 <script src ="jquery-2.1.1.js"></script>

Daha önce sadece bu hataya neden olan jquery-mobile dahil edildi.


3

Komut dosyası etiketini doğru içeriğe işaret edecek şekilde değiştirdim ve komut dizisi düzenleyicide doğru olanı değiştirdim. Ama tamamen değişikliği kurtarmayı unuttum.


2

Benzer bir sorunum vardı ve bir stil sayfası bağlantısında bir kapanış> eksik olmasıydı.


2
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="local_xxx.js"></script>

Ben benzer bir sorun var ve ne olduğunu biliyorum, çünkü ben android cihaz webview test zaman ağ bağlantısı kesildi ve ben bunu anlamıyorum, ve yerel js ağa gerek yok çünkü yüklemek için hiçbir sorun. Saçma görünüyor ama anlamak için ~ 1 saatimi boşa harcıyor.


2

Bir jQuery kütüphanesine başvurmadınız.

HTML'nize buna benzer bir satır eklemeniz gerekir:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

2

Benzer bir sorun yaşadım. Test sunucum "http" ile iyi çalışıyordu. Ancak SSL olan üretimde başarısız oldu.

Böylece üretimde, "HTTP" yerine "HTPPS" ekledim ve testte, "HTTP" olarak tutuldum.

Ölçek:

wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', array(), null, false );

wp_register_script( 'custom-script', plugins_url( '/js/custom.js', __FILE__ ), array( 'jquery' ) );

Üretim:

wp_register_script( 'jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', array(), null, false );

wp_register_script( 'custom-script', plugins_url( '/js/custom.js', __FILE__ ), array( 'jquery' ) );

Umarım bu wordpress üzerinde çalışan birine yardımcı olacaktır.


1

Garip, benim sorunum PHP'den geliyordu.

Bir REST API çağrısı başarısız oldu ve daha sonra kitaplıkların yüklenmesini bozuyordu. Hata REST çağrısından geldiğinden, bana bir php derleme hatası vermiyordu.

Yükleme jquery tamam görünüyorsa, bu bir seçenek olarak da tutun.


1

Mobil hotspot'umla internette gezinirken bu sorunu yaşadım. ayrıca görüntüleri sıkıştırıyordu ve gövde etiketinin altına aşağıdaki komut dosyasını ekliyordu

<script language="javascript"><!--
bmi_SafeAddOnload(bmi_load,"bmi_orig_img");//-->
</script>

Uygun wifi bağlantısına bağlandığımda, tüm iş bulmak benim için görünüyor. Umarım bu birine yardım eder.


1

Bu, ağ sorunu varsa da olabilir. Bu, "jquery komut dosyaları" yerinde olmasına ve kullanımdan önce dahil edilmesine rağmen, jquery komut dosyalarına erişilemediğinden, sayfanın yüklenmesi sırasında "$" tanımları şu şekilde ele alınır: msgstr "tanımlanmamış referanslar".

TEST / HATA AYIKLAMA AMAÇLARI :: Tarayıcıdaki "jquery-script" url'sine erişmeyi deneyebilirsiniz. Erişilebilirse, sayfanız düzgün yüklenmelidir, aksi takdirde söz konusu hatayı (veya komut dosyasıyla ilgili diğer hataları) gösterir. Örnek - http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js tarayıcıya (veya tarayıcı bağlam duruşlarına) erişilebilir olmalıdır.

Windows-host-tarayıcımda html sayfasını (komut dosyalarını kullanarak) yükleyebildiğim, ancak vm-ubuntu'da yükleyemediğim benzer bir sorun yaşadım. Ağ sorununu çözerek sorunu çözdüm.


0
var $ = jQuery;
jQuery(document).ready(function($){

1
Bu kesinlikle bir cevap değil. Bazı açıklamalar eklemelisiniz.
jmlemetayer

Bu Wordpresssizin için bir çözümdür .
Hexodus

Günümü kurtardın. WordPress'te yapmak için uğraşıyordu ve hiçbiri ama bu çözüm bir cazibe gibi çalıştı.
rahimv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.