Develop

[jQuery] document ready 와 window load의 차이와 사용법

issuemaker99 2024. 11. 4. 23:01
728x90

jQuery에서는 페이지가 로드되었을 때 실행할 코드를 작성할 수 있는 여러 기본 함수가 있습니다. 그중에서도 자주 사용되는 $(document).ready()와 $(window).load()의 차이점을 알고 상황에 맞게 사용하는 것이 중요합니다. 각 함수가 어떤 기능을 수행하며 언제 사용하는지 예제와 함께 살펴보겠습니다.


1. $(document).ready()란?

$(document).ready() 함수는 DOM(Document Object Model)이 준비되었을 때 실행됩니다. 즉, 페이지의 HTML 요소가 모두 로드되고 구조가 준비되면 실행됩니다. 이미지나 외부 리소스가 모두 로드될 때까지 기다릴 필요 없이 DOM만 준비되면 실행되기 때문에 빠르게 실행됩니다.

사용 예시

  • 버튼을 클릭했을 때 이벤트를 적용하거나, 텍스트를 변경하는 등 DOM 요소에 대한 조작이 필요할 때 사용합니다.

코드 예제

$(document).ready(function() {
    // 버튼 클릭 이벤트 설정
    $('#myButton').on('click', function() {
        alert('Button clicked!');
    });

    // 텍스트 변경
    $('#title').text('페이지 로드 완료!');
});

 

위 예제에서는 DOM이 로드되면 버튼 클릭 이벤트가 설정되고, 특정 요소의 텍스트가 변경됩니다.


2. $(window).load()란?

$(window).load() 함수는 페이지의 모든 요소가 완전히 로드되었을 때 실행됩니다. 여기에는 이미지, 비디오, CSS, 외부 스크립트 등의 모든 리소스가 포함됩니다. 페이지의 모든 내용이 완전히 로드되었는지 확인해야 할 때 사용합니다.

사용 예시

  • 이미지 크기 조정, 레이아웃 배치, 또는 외부 리소스가 필요할 때 사용합니다.
  • 예를 들어, 슬라이더나 갤러리 같은 기능에서 이미지를 모두 로드한 후 조작이 필요할 때 적합합니다.

코드 예제

$(window).load(function() {
    // 이미지 슬라이더 초기화
    initializeSlider();

    // 갤러리 레이아웃 조정
    adjustGalleryLayout();
});

 

이 코드는 페이지의 모든 이미지와 리소스가 로드된 후 슬라이더 초기화 함수와 갤러리 레이아웃 조정 함수를 실행합니다.


3. $(document).ready()와 $(window).load()의 차이점 정리

 

함수 설명 사용 시기
$(document).ready() DOM이 로드되고 요소가 준비되었을 때 실행됨 요소 이벤트 설정, 기본 조작
$(window).load() 페이지의 모든 리소스가 완전히 로드된 후 실행됨 이미지나 외부 리소스를 사용할 때

 


4. ready()와 load()의 최신 문법

jQuery 버전이 업데이트되면서 ready()와 load()의 작성 방식이 변경되었습니다. 최신 방식으로 작성하는 것이 권장됩니다.

최신 문법 예제

1.  ready() 함수 최신 문법

$(function() {
    console.log('DOM is ready!');
});

또는

$(document).ready(function() {
    console.log('DOM is ready!');
});

 

2.  load() 함수 최신 문법
jQuery 3.0 버전부터 load()는 더 이상 일반 이벤트 메서드로 지원되지 않으므로, $(window).on('load', ...)로 작성해야 합니다.

$(window).on('load', function() {
    console.log('All resources are loaded!');
});

 


5. 실전 예제: 이미지와 DOM 조작을 병행하는 경우

예를 들어, DOM이 준비되면 텍스트를 변경하고, 페이지의 모든 이미지가 로드되면 갤러리 배치를 조정해보겠습니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery Example</title>
    <style>
        .gallery img { width: 200px; height: auto; }
    </style>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1 id="title">Loading...</h1>
    <div class="gallery">
        <img src="image1.jpg" alt="Image 1">
        <img src="image2.jpg" alt="Image 2">
        <img src="image3.jpg" alt="Image 3">
    </div>

    <script>
        // DOM이 준비되면 텍스트 변경
        $(document).ready(function() {
            $('#title').text('DOM is ready!');
        });

        // 모든 리소스가 로드되면 갤러리 배치 조정
        $(window).on('load', function() {
            adjustGalleryLayout();
        });

        // 갤러리 배치 조정 함수
        function adjustGalleryLayout() {
            $('.gallery img').each(function() {
                $(this).css('border', '2px solid blue');
            });
            console.log('Gallery layout adjusted after all images are loaded.');
        }
    </script>
</body>
</html>
LIST