>  기사  >  웹 프론트엔드  >  JQuery 관련 팁(1)----$.Ready()_jquery 정보

JQuery 관련 팁(1)----$.Ready()_jquery 정보

WBOY
WBOY원래의
2016-05-16 16:39:371579검색

저는 최근에 JQuery를 공부하고 있는데 이 내용은 여전히 ​​매우 광범위하고 심오합니다.

$(document).Ready() 메서드 VS OnLoad 이벤트 VS $(window).load() 메서드

JQuery를 접하게 되면 가장 먼저 배우는 것은 언제 이벤트를 시작해야 하는가입니다. 오랫동안 페이지가 로드된 후 발생하는 이벤트는 "Body"의 Onload 이벤트에 로드되었습니다.

Body의 Onload 이벤트와 JQuery의 Ready 메소드에 비해 단점이 많습니다.

1. 여러 기능을 로드하는 데 문제가 있습니다

<body onload="a();b();">

</body>

이렇게 Onload 이벤트에서만 로드할 수 있는데 보기 흉하네요... JQuery에서는 JQuery.Ready() 메소드를 여러 개 사용할 수 있는데, 순서대로 실행됩니다

2. 코드와 콘텐츠가 분리되지 않습니다
이건 말할 것도 없이 역겹다 -.-!!

3. 실행 순서가 다릅니다
Body.Onload 이벤트의 경우 모든 페이지 콘텐츠가 로드될 때까지 트리거되지 않습니다. 이는 사진, 플래시 등을 포함한 모든 콘텐츠를 의미합니다. 페이지에 콘텐츠가 많으면 사용자가 오랫동안 기다려야 합니다. 🎜>

$(document).ready() 메소드의 경우, 이 메소드는 페이지의 모든 DOM이 로드된 후에만 실행되므로 의심할 여지 없이 웹페이지 속도가 크게 향상됩니다.

그러나 사진 확대/축소, 사진 자르기 등 일부 특수한 용도에는 사용됩니다. 웹 페이지의 모든 콘텐츠가 로드된 후에 실행해야 합니까? $(window).load() 메서드를 사용하는 것이 좋습니다. 이 메서드는 페이지의 모든 콘텐츠가 로드될 때까지 실행되지 않으며 OnLoad 이벤트의 단점이 없습니다.

  <script type="text/javascript">
    $(window).load(function() {
      alert("hello");
    });
    $(window).load(function() {
      alert("hello again");
    });
  </script>
위 코드는 페이지의 모든 내용이 로드된 후 순서대로 실행됩니다.

물론 해당 Unload 메소드를 잊지 마세요

$(window).unload(function() {
      alert("good bye");
    });
위 코드는 페이지가 닫힐 때 실행됩니다.

모든 DOM이 로드되기 전에 JS 코드 실행

제가 디버깅할 때 이 방법을 가장 즐겨 사용하고, 개발할 때도 가끔 이 방법을 사용합니다

<body>
  <script type="text/javascript">
    (function() {
      alert("hi");
    })(jQuery)
  </script>
</body>
네, js 코드를 본문에 삽입하기 위해 js 클로저 형식을 사용하는 것입니다. 물론, 이 방법으로 js 코드를 직접 삽입할 수도 있습니다. 주문 문제에 대해 다음과 같이 설명합니다.

<body>
<div id="test">this is the content</div>
  <script type="text/javascript">

    alert($("#test").html());//I Can display the content
    
  </script>
</body>
<body>

  <script type="text/javascript">

    alert($("#test").html());//I Can't display the content
    
  </script>
  <div id="test">this is the content</div>
</body>

위 두 코드, 두 번째 코드는 현재 코드 이전의 DOM만 해석할 수 있고, 파싱된 DOM 개수에는 테스트가 존재하지 않아 두 번째 코드가 제대로 표시되지 않습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.