ready

Specify a function to execute when the DOM is fully loaded.
DOM이 완전하게 로드되면 실행할 함수를 지정한다.
ready(handler) , ready 메서드에 콜백함수 지정해라
handler : function() {...}
DOM이 완전하게 로드되면 ready 메서드에 지정한 콜백함수 실행된다.

 

 

 

<script>
    console.log('hello'); // 가능
    $("#my-div").css("backgroundColor", "red"); // 불가능
</script>
<body>
    <div id="my-div">내 div</div>
</body>

 

다음과 같이 DOM 생성 완료가 아직 안된 상태에서 my-div 가 만들어지지 않았는데, 접근한다? 저 코드는 불가능하다. 스크립트가 위에 있기 때문이다.

 

 

    <script>
        function myFunc() {
            $("#my-div").css("backgroundColor", "red");
        }
    </script>
</head>
<body>
    <div id="my-div">

    </div>
    <button onclick="myFunc()">클릭하기</button>
</body>

 

다음과 같이 버튼을 눌러서 특정 함수를 실행할 경우에는 실행이 된다.

 

 

<body>
    <div id="my-div">내 div</div>
</body>
</html>
<script>
    console.log('hello'); // 가능
    $("#my-div").css("backgroundColor", "red"); // 가능
</script>

 

만일 스크립트를 html 밑에 작성할 경우 실행이 된다. div가 이미 만들어졌고 그 다음에 접근하는 것이기 때문에.

 

 

 

그럼 첫번째 상황일 경우 어떻게 접근해야 할까?

$(document).ready(function() {
   $("#my-div").css("backgroundColor", "red"); // 가능
})

 

다음과 같이 ready 함수를 쓴다. ready 메서드에 콜백함수는 DOM이 완전하게 로드되면 실행한다.

 

 

document.addEventListener('DOMContentLoaded', function() {
    document.getElementById("my-div").style.backgroundColor='red';
}) // 익명함수 형태의 콜백함수, 즉시 실행함수

 

dom 방식으로는 다음과 같이 작성한다. addEventListener 메서드에 'DOMContentLoaded' 를 이용한다.

 

 

 

$(function() {  //ready랑 똑같음
    $("#my-div").css("backgroundColor", "red");
})

 

Jquery 버전을 좀 더 간단하게 줄인 코드이다. 위에 ready를 사용한 것의 축약 버전이다. 코드가 짧아서 좋지만 가독성은 떨어지는 편이다.

+ Recent posts