2012-05-18 29 views
6

Web sayfasında jQuery kullanıyorum. Internet Explorer'da $ kullanırken, iyi çalışıyor. Chrome veya Firefox $ başvururken zaman hata ile başarısız:

Uncaught ReferenceError: $ is not defined. 

Ekran Görüntüsü:

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="jquery-1.7.2.min.js"></script> 
    <script type="text/javascript"> 
     function divClick(sender, event) 
     { 
//  var chk = $(sender).find("input").first()[0]; 
     var chk = jQuery(sender).find("input").first()[0]; 
     alert("Works in ie"); 
     } 
    </script> 
</head> 
<body> 

<div onclick="divClick(this, event)"> 
    <input type="checkbox"> 
</div> 

</body> 
</html> 

Not: tarayıcılar ediliyor benim kaynak kodu ile

enter image description here

yerel dosya sistemindeki bir dosyaya yönlendirildi:

enter image description here

Güncelleme: çalıştı jQuery değiştirmeyi.

Güncelleme: Krom jquery dosyasını bulur uyan (yani 404): jquery-1.7.2.min.js yolunun doğru olup olmadığını

enter image description here

+0

'jquery-1.7.2.min.js', html ile aynı klasörde olup olmadığını kontrol edin. '$ tanımlı değil 'jQuery lib dahil edilmediğinde aldığınız bir hatadır. –

+0

İşleçimi bir dom halinde hazırlamaya nasıl bir örnek verebilir misiniz? Ve ayrıca tıklama dinleyicisini js'ye nasıl taşıyacaksınız? Aşağıdaki örneğime bakın. – Patriotec

cevap

7

Ve bu soru sadece Chrome ve Firefox'ta hata belgelemek için burada:

Html File encoding   IE9  Chrome 
========================= ======= ====== 
Windows-1252     Works Works 
UTF-8 (without BOM)   Works Works 
UTF-8 (with BOM EFBB)  Works Works 
UTF-16 (with LE BOM FFFE) Works Fails 
UTF-16 (with BE BOM FEFF) Works Fails 

Tahminen Krom (ve Firefox) ayrı script dosya html dosyayla aynı kodlamaya sahip olduğunu varsayalım.

Chrome, jquery-1.7.2.js dosyasını UTF-16 olarak okumayı dener ve dosyanın saf (Windows-1252) çöp olduğunu saptamak için şaşırır.

5

kontrol edin. Dosyanın indirilip yüklenmediğini görmek için firefox veya chrome geliştirici aracını kullanıyorsanız firebug'u kontrol edebilirsiniz. JQuery dosyası için bir takma ad olan sayfada undefined olduğu için jQuery dosyası için büyük olasılıkla 404 alıyorsunuzdur.

0

Dene:

var chk = jQuery(sender).find("input").first()[0]; 
+0

Sorunu içerecek şekilde güncellendi. –

0

İşleviniz hazır bir dom sarılmış olması gerekir: function sayfa yüklendikten sonra ateş etmeye izin verecek

$(function(){ 

    function divClick(sender, event) 
    { 
    var chk = $(sender).find("input").first()[0]; 
    alert("Works in ie"); 
    } 

}); 

. ayrıca komut dosyalarınızın kapanış HTML etiketinden hemen önce yüklenmesi gerekir. tüm üst değil. Bu, sayfanın HTML'yi ve css'yi daha hızlı yüklemesini sağlar çünkü JS'nin yüklenmesini beklemek zorunda değildir.

Ayrıca HTML'nizden jQuery için doğru yola sahip olduğunuzdan emin olun.

son şey,

yerine eğer inline HTML tıklama dinleyici JS taşımayı deneyin sahip. Bunu halletmek sadece daha temiz bir yoldur.

$('.clickMe').click(function(){ 
    //do stuff here 
}) 
+0

Fonksiyonumun nasıl * nasıl basılacağına dair bir örnek verebilir misiniz? Ve ayrıca tıklama dinleyicisini 'js'ye nasıl taşıyacaksınız? –

+0

Orada hazır dom var, $ (function() {}) jQuery kısa el versiyonudur. Tıklama olay referansı için bu jsfiddle . http://jsfiddle.net/QgeD9/ – laymanje

0

html'deki onclick yerine, her şeyi Jquery kodunda kimlik aracılığıyla atayım.

Div'in işaretli olup olmadığını veya onay kutusu işaretli olup olmadığını bilmek isteyip istemediğinizden emin değilim. Giriş kontrolünü koda koydum ve div tıklandığında kod ekledim.

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 
$(function(){ 
// $('#divid').unbind("click").click(function(){ 
$('#someid').unbind("click").click(function(){ 
if($(this).is(':checked')){ 
alert("checked"); 
}else{ 
alert("not checked"); 
} 
}); 
}); 
</script> 

</head> 
<body> 

<div id="divid"><input type="checkbox" id="someid"></div> 

</body> 
</html> 
2

Sen Firefox ve Chrome'da JavaScript ile bu hatayı alabilirsiniz:

Uncaught ReferenceError: $ is not defined. 

böyle jquery dahil edin:

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

Ve sunucu javascript içeriği izin vermeyecek şekilde yapılandırıldı Çalıştırılmak ve çalışma zamanında çalıştırmak için yukarıdaki hatayı alırsınız. Bütün hata bir göz atın: sizin web sunucusu javascript içerik anında yüklenmesine izin vermez demektir nedir

[blocked] The page at https://yoursite.com/blah# ran insecure content 
from http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js. 
/blah#:1 
Uncaught ReferenceError: $ is not defined 

. Bu bir güvenlik riskidir çünkü birisi sizin indirmeniz ve sunucularınıza sahip olmanız için orada kötü şeyleri enjekte edebilir. Yukarıdakilerin

1

Yok ben şöyle "application/javascript" olarak türünü belirtmek zorunda Chrome 49. benim için geçerli oldu:

<script src="lib/jquery-1.11.3.min.js" type="application/javascript"></script> 

çalışma değildi "text/javascript" kullanma.

+0

gerçekten bir çekicilik gibi çalıştı :) birçok çözüm denedim ama böyle bir düzeltme bulamadı –

İlgili konular