TypeError : 'undefined'는 함수가 아닙니다 ( '$ (document)'평가)


139
  1. WordPress 사이트를 사용하고 있습니다.
  2. 이 스크립트를 헤더에 포함시킵니다.

스크립트가로드되면이 오류가 발생합니다.

TypeError : 'undefined'는 함수가 아닙니다 ( '$ (document)'평가)

나는 그것이 무엇을 일으키는 지 또는 그것이 무엇을 의미하는지 전혀 모른다.

방화범에서 나는 이것을 얻는다 :

$는 함수가 아닙니다


4
사용자 정의 스크립트 앞에 jQuery 라이브러리 포함하고 NetFirebug 탭에 오류가 없는지 확인하십시오 (jQuery가 실제로로드되는지 확인).
wsanville의

... 예, 물론 jQuery는 미리로드됩니다. WordPress enque 문제라고 확신합니다.
dcolumbus

답변:


239

Wordpress는 기본적으로 noConflict 모드 에서 jQuery를 사용합니다 . 당신은 그것을 사용 참조해야 할 jQuery변수의 이름으로,하지 $, 예를 들어, 사용

jQuery(document);

대신에

$(document);

$jQuery를 다시 참조하고 전역 네임 스페이스를 오염시키지 않도록 자체 실행 함수로 이것을 쉽게 마무리 할 수 ​​있습니다.

(function ($) {
   $(document);
}(jQuery));

5
스크립트는 필요하지 않습니다. 당신은 당신이 원하는 곳 jQuery(document)대신에 전화 할 수 있습니다 $(document). $대신 에 사용 하려면 위의 스크립트는 단순히 인수 $를 취한 다음 전달 하는 함수를 작성합니다 jQuery. 간단히 말해서 함수 내에서 $예상대로 jQuery를 가리 킵니다.
El Yobo

2
사실, 내가 한 일은 매력처럼 작동 $(document).ready(function() { // code });하는 당신의 자리를 대신 $(document);했습니다.
dcolumbus

1
예, 그것이 제가 제안한 것입니다- "함수 내에서 $는 예상대로 jQuery를 가리 킵니다."
El Yobo

자, 그것은 당신에게 그런 식으로 두 개의 문자를 저장하지 않습니다 :) ! function () {} () 형태의 자체 실행 명령문에 대한 자세한 내용 .
El Yobo 2013

오래된 @ElYobo라는 것을 알고 있지만 게시물을 편집하고 첫 번째 주석의 예제를 두 번째 예제의 응답에 추가 할 수 있다고 생각합니다. 시간을 절약 해 주셔서 감사합니다 =)
Manatax

25

jQuery를 사용하십시오 noConflict. 그것은 나를 위해 경이로웠다

var example=jQuery.noConflict();
example(function(){
example('div#rift_connect').click(function(){
    example('span#resultado').text("Hello, dude!");
    });
});

즉, HTML에 jQuery를 포함했다고 가정하면

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


11

이 스 니펫을 사용해보십시오.

jQuery(function($) {
  // Your code.
})

그것은 나를 위해 일했습니다. 아마도 당신을 도울 것입니다.


11

이 문제는 Chrome에서만 발생했습니다.

나는 추가를 시도했다

var $ =jQuery.noConflict();

전화하기 직전에

$(document).ready(function () {

효과가있었습니다.

고마워


이것에 감사합니다. "$"대신 "jQuery"를 사용하여 문제를 해결할 수 있다는 것을 알고 있었지만 문제는 코드 작성 / 완료를 $로하거나 JavaScript가 실제로 작동하도록하는 방법 중 하나를 선택해야하는 방식으로 Komodo 편집을 트립한다는 것입니다. 이 방법으로 둘 다 가질 수 있습니다.
George Kendros 2016 년

6

또한 jQuery를 포함하고 jQuery UI와 같은 일부 구성 요소 / 기타 라이브러리가 있는지 확인한 다음 실수로 jQuery를 다시 포함하십시오. 이는 jQuery를 재정의하고 구성 요소 도우미 (예 : .datepicker)를 인스턴스에서 삭제합니다.



4

나는 이것을 사용할 것이다

(function ($) {
   $(document);
}(jQuery));

2

또한 웹 개발 사업자에서 이러한 문제에 오랫동안 직면 해 왔습니다. 실제로 JS 충돌이 아닙니다. html 웹 사이트를 브라우저에로드 할 때 그러한 오류가 발생하지 않지만 localhost를 통해 이러한 유형의 웹 사이트를로드 할 때 그러한 문제에 직면합니다. 그것은 localhost 때문입니다. 로컬 호스트를 통해 스크립트를로드하면 스크립트가 스캔되고 출력이 렌더링됩니다. 그러나 localhost를 사용하지 않았을 때. 출력 만 스캔합니다. 예를 들어, 로컬 호스트 옆에 PHP 코드를 작성하고 호스트없이 실행하면 오류가 발생합니다. 그러나 코드가 정확하고 호스트를 통해 실행되는 경우 실제 출력을 얻습니다. inspect 요소를 사용할 때 출력 코드를 HTMl 형식으로 얻지 만 PHP 형식은 아닙니다. 이것은 코드 렌더링 때문입니다.

렌더링 오류입니다. 따라서이 jquery 코드 오류를 해결하기 위해 솔루션 중 하나 가이 방법을 사용하고있을 수 있습니다.

jQuery(document).ready(function($){
/******** Body of Jquery Code*****/
});

이 코드는 jquery를 적용하여 '$'를 변수의 변수로 등록합니다. 그렇지 않으면 기본적으로 .js 파일은 javascript로만 읽습니다.


1

내 페이지 헤더에 jQuery를 포함 할 때도이 문제가 발생했지만 호스트가 이미 페이지에 자동으로 포함했다는 것을 알지 못했습니다. 따라서 페이지를 실시간으로로드하고 소스를 확인하여 jQuery가 연결되어 있는지 확인하십시오.



1

이 사이에 모든 스크립트를 포장 ...

<script>
    $.noConflict();
    jQuery( document ).ready(function( $ ) {
      // Code that uses jQuery's $ can follow here.
    });
</script>

많은 JavaScript 라이브러리는 jQuery와 마찬가지로 $를 함수 또는 변수 이름으로 사용합니다. jQuery의 경우 $는 jQuery의 별칭 일 뿐이므로 $를 사용하지 않고도 모든 기능을 사용할 수 있습니다. jQuery와 함께 다른 JavaScript 라이브러리를 사용해야하는 경우 $ .noConflict ()를 호출하여 $의 제어를 다른 라이브러리로 다시 리턴하십시오 . jQuery 초기화 중에 $에 대한 이전 참조가 저장됩니다. noConflict ()는 단순히 그것들을 복원합니다.


1

아래 스 니펫에서 jQuery와 $를 모두 사용할 수 있습니다. 그것은 나를 위해 일했다

jQuery( document ).ready(function( $ ) {
  // jQuery(document)
  // $(document)
});

1

function ()에서 $를 전달할 수 있습니다.

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

// jQuery code is in here

});

또는 당신은 대체 할 수있는 $(document);이와 함께jQuery(document);

또는 당신은 사용할 수 있습니다 jQuery.noConflict()

var jq=jQuery.noConflict();
jq(document).ready(function(){  
  jq('selector').show();
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.