JQuery-$가 정의되지 않았습니다

간단한 jquery 클릭 이벤트가 있습니다

<script type="text/javascript">
    $(function() {
        $('#post').click(function() {
            alert("test"); 
        });
    });
</script>

site.master에 정의 된 jquery 참조

<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>

스크립트가 올바르게 해결되고 있는지 확인했습니다. 마크 업을보고 Firebug에서 직접 스크립트를 볼 수 있으므로 찾아야합니다. 그러나 나는 여전히 얻고있다 :

$가 정의되지 않았습니다

그리고 jquery가 작동하지 않습니다. 또한 $ (document) .ready 및 jQuery 등과 같은 다양한 변형을 시도했습니다.

.net 3.5의 MVC 2 앱입니다 .Google의 모든 곳에서 파일이 올바르게 참조되었는지 확인한다고 말하면 다시 확인하고 다시 확인하십시오. : /



답변

이 오류는 다음 세 가지 중 하나에 의해서만 발생할 수 있습니다.

  1. 자바 스크립트 파일이 페이지에 제대로로드되지 않았습니다
  2. 봇치 버전의 jQuery가 있습니다. 누군가 코어 파일을 편집했거나 플러그인이 $ 변수를 덮어 써서 발생할 수 있습니다.
  3. 페이지가 완전히로드되기 전에 그리고 jQuery가 완전히로드되기 전에 JavaScript가 실행 중입니다.

우선, 어떤 스크립트가 올바르게 호출되는지 확인하십시오.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

그리고 async 또는 defer 속성이 없어야합니다 .

그런 다음 Firebug net 패널을 검사하여 파일이 실제로 제대로로드되는지 확인해야합니다. 그렇지 않으면 빨간색으로 강조 표시되고 옆에 “404”라고 표시됩니다. 파일이 제대로로드되면 문제가 2 번임을 의미합니다.

모든 jQuery 자바 스크립트 코드가 다음과 같은 코드 블록 내에서 실행되고 있는지 확인하십시오.

$(document).ready(function () {
  //your code here
});

그러면 jQuery가 초기화 된 코드가로드 됩니다.

마지막으로 확인해야 할 것은 jQuery를로드 하기 전에 플러그인 을로드 하지 않는지 확인하는 것 입니다. 플러그인은 “$”객체를 확장하므로 jQuery 코어를로드하기 전에 플러그인을로드하면 설명 된 오류가 발생합니다.

참고 : jQuery를 실행할 필요가없는 코드를로드하는 경우 jQuery 준비 핸들러 내에 배치 할 필요가 없습니다. 이 코드는을 사용하여 분리 될 수 있습니다 document.readyState.


답변

jquery 스크립트가 호출되기 전에 스크립트 태그가 호출되었을 수 있습니다.

<script type="text/javascript" src="js/script.js"></script>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

$가 정의되지 않은 결과

jquery.js를 스크립트 태그 앞에 넣으면 다음과 같이 작동합니다.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript" src="js/script.js"></script>


답변

먼저 jQuery 스크립트가로드되어 있는지 확인해야합니다. CDN 또는 웹 사이트의 로컬 일 수 있습니다. jQuery를 사용하기 전에 이것을 먼저로드하지 않으면 jQuery가 정의되지 않았다는 메시지가 나타납니다.

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

이것은 HEAD 또는 페이지 바닥 글에있을 수 있습니다. 다른 jQuery를 호출하기 전에로드해야합니다.

그런 다음 아래 두 가지 솔루션 중 하나를 사용해야합니다.

(function($){
// your standard jquery code goes here with $ prefix
// best used inside a page with inline code, 
// or outside the document ready, enter code here
 })(jQuery); 

또는

jQuery(document).ready(function($){
// standard on load code goes here with $ prefix
// note: the $ is setup inside the anonymous function of the ready command
});

여러 번 $ (document) .ready (function () {// code here}); 작동 안 할 것이다.


답변

jQuery 플러그인 호출이 옆에 있고 </body>그 전에 스크립트가로드 된 window.onload경우 다음과 같이 이벤트 후에 코드를 실행해야 합니다.

window.onload = function() {
  //YOUR JQUERY CODE
}

`

따라서 코드는 모든 자산이로드되었을 때 창로드 후에 만 ​​실행됩니다. 이 시점에서 jQuery ( $)가 정의됩니다.

당신이 그것을 사용하는 경우 :

$(document).ready(function () {
  //YOUR JQUERY CODE
});

`

$아직이 jQuery를로드되기 전에 호출되며, 스크립트가 콘솔에서 첫 번째 줄에 실패하기 때문에,이 시점에서 정의되지 않습니다.


답변

방금 똑같은 일을했고 많은 것을 가지고 있음을 발견했습니다.

type="text/javacsript"

그래서 그들은로드되었지만 왜 작동하지 않는지에 대한 추가 힌트는 없습니다. 말할 필요도없이, 올바른 철자가 그것을 고쳤습니다.


답변

보기 및 마스터 레이아웃에서 스크립트 섹션 을 사용하십시오 .

보기에 정의 된 모든 스크립트를보기의 스크립트 섹션 안에 넣으십시오. 이런 식으로 다른 모든 스크립트가로드 된 후 마스터 레이아웃에이를로드 할 수 있습니다. 새 MVC5 웹 프로젝트를 시작할 때의 기본 설정입니다. 이전 버전에 대해 잘 모르겠습니다.

Views / Foo / MyView.cshtml :

// The rest of your view code above here.

@section Scripts
{
    // Either render the bundle defined with same name in BundleConfig.cs...
    @Scripts.Render("~/bundles/myCustomBundle")

    // ...or hard code the HTML.
    <script src="URL-TO-CUSTOM-JS-FILE"></script>

    <script type="text/javascript">
      $(document).ready(function () {

        // Do your custom javascript for this view here. Will be run after 
        // loading all the other scripts.            
      });
    </script>
}

조회수 / 공유 /_Layout.cshtml

<html>
<body>
    <!-- ... Rest of your layout file here ... -->

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
</body>
</html>

마스터 섹션 파일에서 스크립트 섹션이 마지막으로 렌더링되는 방법에 유의 하십시오.


답변

실제로 jquery를로드해야합니다 .jquery가 아닙니다 -UI입니다!

  <script language="JavaScript"
    src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js">
  </script>

이것은 jquery에 대한 올바른 스크립트 소스입니다.

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