programing

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

fastcode 2023. 3. 21. 22:37
반응형

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

  1. 워드프레스 사이트를 사용하고 있습니다.
  2. 이 대본을 헤더에 포함시키고 있습니다.

스크립트가 로드되면 다음 오류가 나타납니다.

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

원인이 뭔지, 무슨 의미인지도 모르겠어요.

파이어버그에서는 이런 말을 듣습니다.

$는 함수가 아닙니다.

Wordpress는 기본적으로 noConflict 모드에서 jQuery를 사용합니다.다음을 사용하여 참조해야 합니다.jQuery변수 이름으로, 아닌$(예: 사용)

jQuery(document);

대신

$(document);

이 기능을 셀프 실행 기능으로 쉽게 정리할 수 있으므로$는 jQuery를 다시 참조합니다(글로벌 네임스페이스의 오염도 방지합니다).

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

jQuery를 사용합니다.그것은 나에게 놀라운 일을 했다.

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>

사용방법:

var $ =jQuery.noConflict();

다음 스니펫을 사용해 보세요.

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

나한테도 먹혔어, 아마 너도 도움이 될 거야.

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

추가해 보았다

var $ =jQuery.noConflict();

부르기 직전에

$(document).ready(function () {

됐다.

정말 감사해요.

또한 jQuery를 포함한 후 일부 컴포넌트/기타 라이브러리(jQuery UI 등)를 포함한 후 실수로 jQuery를 다시 포함하는지 확인합니다.이것에 의해, jQuery가 재정의되어 컴포넌트 헬퍼(.datepicker 등)가 인스턴스에서 삭제됩니다.

이걸 쓰겠습니다.

(function ($) {
   $(document);
}(jQuery));
 ;(function($){
        // your code
    })(jQuery);

위의 클로저 안에 js 코드를 넣으면 문제가 해결됩니다.

웹 개발 통신사에서도 여러 번 그런 문제에 직면했습니다.사실 JS 컨플릭트는 아닙니다.html 웹사이트를 브라우저에 로드할 때는 오류가 발생하지 않지만, localhost를 통해 이러한 유형의 웹사이트를 로드할 때는 이러한 문제가 발생합니다.그건 로컬 호스트 때문이에요.로컬 호스트를 통해 스크립트를 로드하면 스크립트가 스캔되어 출력이 렌더링됩니다.하지만 localhost를 사용하지 않을 때는요.출력만 스캔하면 돼예를 들어 localhost에 php 코드를 쓰고 호스트 없이 실행하면 오류가 발생합니다.그러나 코드가 올바르고 호스트를 통해 실행되면 실제 출력을 얻을 수 있습니다.inspect 요소를 사용하면 출력 코드가 HTML 형식으로 표시되지만 PHP 형식으로 표시되지 않습니다.이것은 코드의 렌더링 때문입니다.

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

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

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

페이지 헤더에 jQuery를 포함할 때도 이 문제가 발생했지만 호스트가 이미 페이지에 jQuery를 자동으로 포함하고 있다는 것을 깨닫지 못했습니다.따라서 페이지를 라이브로 로드하고 소스를 확인하여 jQuery가 링크되어 있는지 확인합니다.

두 가지:

  1. $(문서) 앞에 jQuery 라이브러리가 추가되었는지 확인하십시오.
  2. 그리고 모든 "$"를 이전 코멘트와 같이 jQuery로 변경합니다.

이 사이에 모든 대본을 끼웁니다...

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

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

아래 스니펫에서는 jQuery와 $를 모두 사용할 수 있습니다.그것은 나에게 효과가 있었다.

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

$ in function()을 전달할 수 있습니다.

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

// jQuery code is in here

});

또환교교 or or or or or이다.$(document);이와 함께.jQuery(document);

이렇게 쓸 수도 요.jQuery.noConflict()

var jq=jQuery.noConflict();
jq(document).ready(function(){  
  jq('selector').show();
});

언급URL : https://stackoverflow.com/questions/7975093/typeerror-undefined-is-not-a-function-evaluating-document

반응형