[jquery] TypeError : $는 jQuery 함수를 호출 할 때 함수가 아닙니다.

다음과 같이 jQuery 래퍼를 사용하는 WordPress 플러그인에 간단한 jQuery 스크립트가 있습니다.

$(document).ready(function(){

    // jQuery code is in here

});

WordPress 대시 보드 내 에서이 스크립트를 호출하고 jQuery 프레임 워크가로드 된 후에로드하고 있습니다.

Firebug에서 페이지를 확인할 때 지속적으로 오류 메시지가 나타납니다.

TypeError : $는 함수가 아닙니다

$ (document) .ready (function () {

이 함수에서 스크립트를 래핑해야합니까?

(function($){

    // jQuery code is in here

})(jQuery);

이 오류가 꽤 많이 발생했으며 처리 방법을 잘 모르겠습니다.

도움을 주시면 감사하겠습니다.



답변

기본적으로 당신은 당신이 사용해야합니다 워드 프레스에 jQuery를 대기열에 때 jQuery, 그리고 $(이것은 다른 도서관과의 호환성을위한) 사용되지 않습니다.

그것을 감싸는 솔루션은 function잘 작동하거나 jQuery를 다른 방법으로로드 할 수 있습니다 (그러나 WordPress에서는 좋지 않습니다).

를 사용해야하는 경우 document.ready실제로 $함수 호출에 전달할 수 있습니다 .

jQuery(function ($) { ...


답변

이 문제를 해결해야합니다.

jQuery(document).ready(function($){
  //you can now use $ as your jQuery object.
  var body = $( 'body' );
});

간단히 말해 WordPress는 사용자가 직접 스크립트를 실행하고 $var 를 해제하여 다른 라이브러리와 충돌하지 않도록합니다. WordPress는 모든 종류의 웹 사이트, 앱 및 블로그에 사용되므로 완전히 이해됩니다.

그들의 문서에서 :

WordPress에 포함 된 jQuery 라이브러리는 noConflict () 모드로 설정됩니다 (wp-includes / js / jquery / jquery.js 참조). 이는 WordPress가 연결할 수있는 다른 JavaScript 라이브러리와의 호환성 문제를 방지하기위한 것입니다.

noConflict () 모드에서는 jQuery의 전역 $ 바로 가기를 사용할 수 없습니다 …


답변

이 솔루션은 저에게 효과적이었습니다.

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

클로저 내부에서 코드를 이동하고 $대신 사용하십시오.jQuery

/magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma 에서 위의 솔루션을 찾았습니다.

… 너무 많이 검색 한 후


답변

이런 갈등을 피할 수 있습니다

var jq=jQuery.noConflict();
jq(document).ready(function(){
  alert("Hi this will not conflict now");
  jq('selector').show();
});


답변

var $=jQuery.noConflict();

$(document).ready(function(){
    // jQuery code is in here
});

Ashwani Panwar 및 Cyssoo의 답변 : https://stackoverflow.com/a/29341144/3010027


답변

이 시도:

<script language="JavaScript" type="text/javascript" src="jquery/jquery.js"></script>
<script>
    jQuery.noConflict();
    (function ($) {
        function readyFn() {
            // Set your code here!!
        }

        $(document).ready(readyFn);
    })(jQuery);

</script>


답변

function ()에서 $를 전달해야합니다.

<script>
jQuery(document).ready(function($){

// jQuery code is in here

});
</script>