잡히지 않은 ReferenceError : $가 정의되지 않았습니까?


657

이 코드는 어떻게 발생합니까?

잡히지 않은 ReferenceError : $가 정의되지 않았습니다

전에는 괜찮 았나요?

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

탭의 결과가 더 이상 닫히지 않습니다.

jQuery는 헤더에서 참조됩니다.

<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> 이것을 사용하십시오. 상단
캡틴 삭

필자의 경우 JQuery는 바닥 글 섹션에 있으므로 JS 함수가 먼저 호출되었습니다.
Daniel Beltrami

이것이 귀하의 질문에 대답합니까? ReferenceError : $이 정의되지 않았습니다
Brynn

답변:


687

jquery 스크립트에 대한 참조를 먼저 넣어야합니다.

<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
이것을 분명히하기 위해 : jquery 스크립트 자체 앞에 jquery-ui에 대한 스크립트 참조를 넣을 수 없습니다. 그것이 문제를 해결 한 것입니다 : 먼저 jquery-xxxmin.js, 그런 다음 jquery-ui-xxxxxx.js.
바그너 다 실바

26
2 년이 지난 후에도 여전히 답이 "틱"되지 않습니다.) 이 기사에서는 이 오류가 발생할 때이 4 가지 일반적인 사례에 대해 설명합니다.
우즈벡 존

2
@Uzbekjon 그것은 나를 위해 해결했다. 내 파일 중 하나 에서 스크립트 경로가 잘못되었습니다 HTML.
Adam Jensen

@ Jeeremy, 고마워. 또한 부분 뷰 (mvc) 앞에 두어 부분의 모든 스크립트에 사용할 수 있도록하십시오.
Andrew Day

1
@Uzbekjon은 거의 10 년이 지났지 만 여전히 똑딱 거리지 않습니다. 기사 링크를 제공해 주셔서 감사합니다.
Modo

235

jQuery JavaScript가 포함되기 전에 ready 함수를 호출하고 있습니다. 먼저 jQuery를 참조하십시오.


30
@RamSharma 사실, 이것이 정답입니다. 문제를 해결하기 위해 다른 것이 필요하지 않습니다.
Derek 朕 會 功夫

예. 이것은 내 문제였다. js 파일을 참조한 후에 jquery를 사용했습니다. 도!
dogonaroof

내 경우에는 <script src = "/ js / jquery-1.2.6.min.js"defer> </ script>에서 키 지연을 제거해야했습니다.
Charden Daxicen

123

이것이 나를 위해 해결 한 것입니다. 원래 Google에 가서 CDN 페이지에 제안 된 jQuery에 대한 스 니펫을 복사하여 붙여 넣었습니다.

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

코드 조각은 포함되지 않습니다 HTTP:또는 HTTPS:src속성을하지만 난 그것을 변경할 수 있도록 브라우저, 파이어 폭스, 그것을 필요로 편집이 잘 구글 크롬에 나를 위해 일한

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

그런 다음 효과가있었습니다.


13
엄밀히 말하면 Google 스 니펫 / 예제는 정확합니다 .src 속성은 URL이 적은 프로토콜이므로 브라우저는 호출 페이지의 프로토콜 (HTTP / HTTPS)을 사용해야합니다. paulirish.com/2010/the-protocol-relative-url을 참조하십시오 . 페이지가 SSL을 통해 제공되고 스크립트가 그렇지 않은 경우 혼합 된 내용 경고를 피하는 것이 좋습니다.
pwdst

12
여기서 일반적인 문제 중 하나는 개발 중에 프로토콜 기준 URL을 사용하고 화창한 날에 로컬 파일에서 페이지를로드하려고 할 때입니다. 브라우저가 낙관적으로로드를 시도하고 file://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js왜 네트워크 콘솔에 표시되지 않는지 궁금합니다.
Pieter Ennes

@PieterEnnes에게 감사드립니다. 답변자에게도 감사합니다!
jwg

43

jQuery 플러그인이 브라우저에로드되기 전에 사용자 정의 스크립트가로드되면이 유형의 문제가 발생할 수 있습니다. 따라서 jQuery 플러그인을 호출 한 후에는 항상 고유 한 JavaScript 또는 jQuery 코드를 유지하여 이에 대한 해결책은 다음과 같습니다.

먼저 GoogleApis에서 호스팅되는 jQuery 파일 또는 http://jquery.com/download/ 에서 다운로드 하여 서버에서 호스트 할 로컬 jQuery 파일에 대한 링크를 추가하십시오 .

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

또는 jQuery 용 플러그인. 그런 다음 사용자 정의 스크립트 파일 링크 또는 코드를 넣으십시오.

<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 완벽한 대답 .. 내 경우에는 스크립트가 바닥 글에 있었다
echoashu

41

제 경우 .js에는 jQuery 스크립트 링크 앞에 파일 을 넣고 jQuery 스크립트 링크 .js뒤에 파일을 넣으면 문제가 해결되었습니다.

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

방금 이것을 사용하여 jschart를 수정했습니다.
indofraiser

이로 인해 문제가 해결 .js 되었으므로 파일을 jQuery 스크립트 링크 앞에 두어야합니다.
과학적 방법

27

좋아, 내 문제는 달랐다 -Chrome의 문서 보안 모델이었습니다 .

여기에 대한 답변을 보면 $(document).ready()등 함수 를 호출하기 전에 jquery 파일을로드하지 않는 것이 분명했습니다 . 그러나 그들은 모두 올바른 위치에있었습니다.

필자의 경우 이는 안전한 HTTPS 연결을 통해 콘텐츠에 액세스하고 있었기 때문에 페이지는 Google 등에서 CDN 호스팅 데이터를 다운로드하려고 시도한 것입니다. 매번 CDN.

편집 :이 작업을 수행하는 다른 방법은 http : //가 아닌 https : //로 모든 CDN 호스트 항목에 연결하는 것입니다. 그러면 모델이 불평하지 않습니다.


5
또한 프로토콜을 링크에서 분리 할 수 ​​있으며 컨텍스트에 따라 적절한 프로토콜을 선택합니다 (http 및 https 버전이 모두 있다고 가정). 참조 stackoverflow.com/a/3622615/4332
아드리안 Mouat

네. 이 문제는 내 문제를 해결했으며 다음과 같은 Url에서 스크립트를로드했습니다. '사용 cdnjs은 ...'좋은 작품
user9869932에게

25

스크립트를 시작하기 전에 라이브러리를 추가 하십시오. 다음 CDN 을 추가 하여 시작할 수 있습니다.

구글 :

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

마이크로 소프트

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

jquery

다른 Jquery cdn 버전을 원하면이 링크를 확인 하십시오 .

금후:

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

워드 프레스 :

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

19

워드 프레스 인 경우 변경해야 할 수도 있습니다.

$(document).ready(function() {

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

또는 추가

var $ = jQuery;

전에

$(document).ready(function() {

19

나는 똑같은 문제가 있었고 위의 해결책 중 어느 것도 도움이되지 못했습니다. 그러나 파일과 파일이 기적적으로 사라진 .css후에 파일을 연결했습니다 .js. 도움이 되었기를 바랍니다.


13
먼저 페이지 렌더링 성능을 향상 시키려면 항상 CSS 파일을 JS 파일보다 먼저 연결해야합니다. 둘째, css 및 js 파일의 순서는 현재 인용에 영향을 미치지 않아야합니다.
우즈벡 존

12
"문제를 해결 한 것이 문제를 해결하지 않아야하며 문제를 해결 한 것을 수행해서는 안됩니다."
앤드류

15

스크립트를 비동기 로 만들려고했습니다 . 그런 다음 잊어 버렸으며 [custom] .js 파일을 라이브로 사용할 때 jQuery.js 이전 시간의 50 % 만로드되었습니다.

그래서 나는 바꿨다

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

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

14

필자의 경우 스크립트 호출 순서가 잘못되어이 referenceError가 발생했습니다. 순서를 변경하여 해결했습니다.

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

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

1
대부분 이것이 '$'에 대한 참조 오류가 발생했을 때 발견 한 문제였습니다.
Dipak

8

나는 같은 문제가 있었고 내 코드에있는 모든 자바 스크립트 코드의 최상위에 jQuery를 두어 해결했다.

이 같은:

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

희망은 미래에 도움이 될 수 있습니다.


8

ready()jQuery JavaScript가 포함되기 전에 함수를 호출하고 있습니다. 먼저 jQuery를 참조하십시오.

ASP.NET MVC에있는 경우 다음을 수행하여 JS 코드를 렌더링 할시기를 지정할 수 있습니다.

1, 당신에 page.cshtml포장하여 <script>섹션에 태그 및 이름을 지정, 사용에 대한 공통의 이름은 '스크립트'입니다 :

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

2, 귀하의 _Layout.cshtml페이지에 추가하십시오 @RenderSection("Scripts", required: false), 당신이 Jquery 소스를 참조한 후에 그것을 넣으십시오, 이것은 JS 코드가 Jquery보다 나중에 렌더링되도록합니다.


6

.Net 에서이 작업을 수행하고 스크립트 파일이 올바르게 참조되고 jQuery가 잘 보이는 경우 사용자가 스크립트 파일에 액세스 할 수 있는지 확인하십시오. 내가 공동 작업 한 프로젝트 (동료)는 익명 사용자에 대한 액세스를 거부하는 web.config를 가졌습니다. 내가 작업했던 페이지는 익명의 사용자가 액세스 할 수 있으므로 스크립트 파일에 액세스 할 수 없었습니다. web.config에 다음을 삭제하고 세상 모든 것이 옳았습니다.

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

6

제 경우에는 오타였습니다. 나는 백 슬래시를 잊어 버렸고 소스를 잘못 참조했습니다.

전에 src="/scripts/jquery.js"

후    src="scripts/jquery.js"


5

소스 파일 jquery-1.2.6.min.js은 jQuery 명령 $()이 아닙니다.<..src='jquery-1.2.6.min.js'> .

<.. src="/js/jquery-1.2.6.min.js..">먼저 실행 하고 src 경로가 올바른지 확인한 다음 jquery 명령을 실행하십시오.

$(document).ready(function() 

5

이것은 전에 나에게 일어났다.

그 이유는 JS를 사용하여 android를 webview에 연결했기 때문입니다. 그리고 따옴표없이 매개 변수를 보냈습니다.

js.sayHello(hello);

내가 그것을 바꿀 때

js.sayHello('hello');

효과가있었습니다.


따옴표가없는 매개 변수가 무엇을 의미하는지 모르겠습니다 ... 참조 오류가있는 것처럼 들립니다.
Aluan Haddad

나는 프리 마커에 문제가 있었고, 값이 문자열처럼되지 취급 그래서 이유는, 단일 인용 부호의 부재, 그러나 변수로
torina

4

JavaScript 파일이 누락되어이 오류가 발생했습니다. <head>태그 안에 JavaScript 파일을 추가하기 만하면 됩니다. 예를보십시오 :

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

또는 태그에 다음 코드를 추가하십시오.

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

4

다음 두 시나리오에서도 오류가 발생합니다.

  1. HTML 파일에서 @section scripts 요소가 누락되었습니다
  2. DOM 요소에 액세스하는 중 오류가 발생했습니다. 예를 들어 DOM 요소에 액세스하는 것은 $ ( ". js-toggle") 대신 $ ( "js-toggle")로 언급됩니다. 실제로 기간이 없습니다

따라서 수행해야 할 3 가지-필수 스크립트가 추가되었는지 확인하고 Java 스크립트에서 필수 순서로 추가되었는지 확인하고 세 번째 구문 오류가 있는지 확인하십시오.


네. 그리고 id 속성 $ ( '# someDiv')
cagcak

3

도! 태그에 따옴표를 혼합하여 jquery 참조가 중단되었습니다. Chrome에서 검사를 수행하면 파일이 제대로 연결되지 않았 음을 알 수있었습니다.


3

내 경우에는 이것을 포함하는 것을 잊었다.

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

이전에는 jquery-mobile 만 포함 하여이 오류가 발생했습니다.


3

올바른 내용을 가리 키도록 스크립트 태그를 수정하고 편집기에서 스크립트 순서를 올바른 순서로 변경했습니다. 그러나 변경 사항을 저장하는 것을 완전히 잊었습니다.


2

비슷한 문제가 있었고 스타일 시트 링크에서 닫기가 누락 되었기 때문입니다.


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>

비슷한 문제 있으며 Android 장치 webview에서 테스트 할 때 네트워크 연결이 끊어 졌기 때문에 알 수 없으며 로컬 js는 네트워크가 필요하지 않기 때문에로드하는 데 아무런 문제가 없습니다. 그것은 어리석은 것처럼 보이지만 알아 내기 위해 ~ 1 시간을 낭비합니다.


2

jQuery 라이브러리를 참조하지 않았습니다.

HTML에 이와 비슷한 줄을 포함해야합니다.

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

2

비슷한 문제가있었습니다. 내 테스트 서버는 "http"에서 제대로 작동했습니다. 그러나 SSL이있는 프로덕션에서는 실패했습니다.

따라서 프로덕션 환경에서는 "HTTP"대신 "HTPPS"를 추가했으며 테스트 중에는 "HTTP"로 유지했습니다.

테스트:

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' ) );

생산:

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' ) );

이것이 워드 프레스 작업을하는 사람에게 도움이되기를 바랍니다.


1

이상하게도, 내 문제는 PHP에서 나왔습니다.

REST API 호출이 실패했으며 그 후에 라이브러리로드가 중단되었습니다. REST 호출에서 실패했기 때문에 PHP 컴파일 오류가 발생하지 않았습니다.

jquery를로드해도 괜찮은 경우이를 옵션으로 유지하십시오.


1

모바일 핫스팟을 통해 인터넷을 탐색 할 때이 문제가 발생했습니다. 또한 이미지를 압축하고 body 태그의 맨 아래에 다음 스크립트를 추가했습니다.

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

적절한 Wi-Fi 연결에 연결하면 모든 것이 제대로 작동하는 것 같습니다. 이것이 누군가를 돕기를 바랍니다.


1

네트워크 문제가있는 경우에도 발생할 수 있습니다. 즉, "jquery 스크립트"가 제자리에 있고 사용 전에 포함되어 있어도 페이지를로드 할 때 jquery 스크립트에 액세스 할 수 없으므로 "$"에 대한 정의는 다음과 같이 처리됩니다. "정의되지 않은 참조".

테스트 / 디버그 목적 :: 브라우저에서 "jquery-script"URL에 액세스 할 수 있습니다. 액세스 가능한 경우 페이지가 제대로로드되어야합니다. 그렇지 않으면 해당 오류 (또는 다른 스크립트 관련 오류)가 표시됩니다. 예 -http : //ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 브라우저 (또는 브라우저 컨텍스트 입장)에서 액세스 할 수 있어야합니다.

비슷한 문제가있어서 windows-host-browser에서 html 페이지 (스크립트를 사용하여)를로드 할 수 있었지만 vm-ubuntu에서는로드 할 수 없었습니다. 네트워크 문제를 해결하여 문제를 해결했습니다.


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

1
이것은 절대 답이 아닙니다. 설명을 추가해야합니다.
jmlemetayer

이것은 Wordpress당신이 그것을 언급 해야하는 해결책 입니다.
Hexodus 17

당신은 내 하루를 구했습니다. WordPress에서 그것을하기 위해 고군분투했지만 아무도이 솔루션이 매력처럼 작동했습니다.
rahimv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.