다음과 같이 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>