2012-05-18 6 views
6

웹 페이지에서 jQuery를 사용하고 있습니다. Internet Explorer에서 $을 사용할 때 제대로 작동합니다. 크롬이나 파이어 폭스에서 $를 참조 할 때 오류와 함께 실패합니다

Uncaught ReferenceError: $ is not defined. 

스크린 샷 :

<!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> 

참고 : 브라우저가 존재하는 내 소스 코드와

enter image description here

로컬 파일 시스템에있는 파일로 이동 :

enter image description here

업데이트 : 시도는 jQuery로 변경.

업데이트가 크롬은 JQuery와 파일을 찾습니다 (즉, 아무 404) : jquery-1.7.2.min.js의 경로가 올바른지 여부를

enter image description here

+0

'jquery-1.7.2.min.js'가 html과 같은 폴더에 있는지 확인하십시오. '$ is not defined'는 jQuery 라이브러리가 포함되어 있지 않을 때 발생하는 에러입니다. –

+0

dom에서 내 함수를 래핑하는 방법에 대한 예를 들어 주시겠습니까? 또한 클릭 수신기를 js로 이동하는 방법은 무엇입니까? 아래 예제를보십시오. – Patriotec

답변

7

그리고이 질문은 크롬과 파이어 폭스에서 버그 문서화 여기에 있습니다 :

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 

은 아마도 크롬 (파이어 폭스)는 별도의 script 파일이 html 파일과 같은 인코딩이 있다고 가정합니다.

그런 다음 Chrome은 jquery-1.7.2.js을 UTF-16으로 읽으려고 시도하며 파일이 순수한 (Windows-1252) 쓰레기라는 사실에 놀란다.

5

확인합니다. firefox 또는 chrome 개발자 도구를 사용하여 파일 다운로드 여부를 확인하는 경우 파일을 체크 인 할 수 있습니다. jQuery 객체의 별칭 인 페이지에서 $가 정의되지 않았기 때문에 대부분 jQuery 파일에 대해 404를 얻게됩니다.

0

시도 :

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

질문을 포함하도록 업데이트했습니다. –

0

함수가 준비 DOM에 싸여 할 필요가 : 함수는 페이지가로드 된 후에 만 ​​발사 할 수

$(function(){ 

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

}); 

. 스크립트는 닫는 HTML 태그 바로 전에로드해야합니다. 모든 최고는 아닙니다. 그러면 JS가로드 될 때까지 기다릴 필요가 없기 때문에 페이지에 HTML과 CSS를 빠르게로드 할 수 있습니다.

또한 HTML에서 jQuery에 대한 올바른 경로가 있는지 확인하십시오.

마지막 일,

대신하는 경우 인라인 HTML에 클릭 리스너가 JS로 이동하려고 가지고. 그것을 다루는 더 조직적인 방법 일뿐입니다.

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

dom * 내 함수를 * 감싸는 방법에 대한 예제를 주시겠습니까? 그리고 클릭 리스너를'js '로 옮기는 방법도? –

+0

그들은 dom 준비가되어 $ (function() {})입니다. 이것은 jQuery 단문 버전입니다. 클릭 이벤트 참조에 대해서는 이 jsfiddle입니다. http://jsfiddle.net/QgeD9/ – laymanje

0

대신 HTML에서 onclick 대신 Jquery 코드에서 id를 통해 모든 것을 할당했습니다.

div가 선택되어 있는지 또는 확인란이 선택되어 있는지 알고 싶은지 확실하지 않습니다. 나는 입력 체크를 코드에 넣고 div가 클릭되면 코드를 주석 처리했다.

<!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

당신은 파이어 폭스와 크롬에서 자바 스크립트와이 오류를 얻을 수 있습니다 :

Uncaught ReferenceError: $ is not defined. 

이 같은 JQuery와이 포함 된 경우 :

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

를 그리고 서버가 자바 스크립트 콘텐츠를 허용하지 않도록 구성되어 런타임에 다운로드하여 실행하면 위의 오류가 발생합니다. 전체 오류를 살펴보십시오.

[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 

웹 서버가 자바 스크립트 콘텐츠를 즉시로드 할 수 없다는 것을 의미합니다. 누군가가 당신이 다운로드하고 서버를 소유 할 수있는 악의적 인 것을 넣을 수 있기 때문에 보안 상 위험합니다. 위의

1

없음은 내가 너무 좋아 "응용 프로그램/자바 스크립트 '와 같은 유형을 지정했다 크롬 49 에 나를 위해 적용 없었다 :

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

가 작동하지 않는"텍스트/자바 스크립트 "를 사용.

+0

정말 매력처럼 작동 :) 많은 솔루션을 시도했지만이 같은 수정을 찾을 수 없습니다 –

관련 문제