디자이너 윈썸 2022. 8. 23. 13:55

HTML을 읽어 들이는 타이밍에 실행되는 ready( )

'처리가 실행되는 계기'는 클릭 또는 마우스오버처럼 브라우저상에서 유저의 조작만 있는 것이 아님

"브라우저가 웹 페이지를 읽어 들이는 것이 끝났다"라는 것도 이벤트의 한 종류

 


$(function( ) {

       HTML을 읽어 들이고 실행하는 처리

});

다음 코드는 생략형


$(document).ready(function( ) {

     HTML을 읽어 들이고 실행하는 처리

});

 

ready( )는'HTML 로딩 완료'라는 이벤트를 감지하는 명령입니다

ready( )의 좌측에는 셀렉터를 $(document)와 같이 기술하여 '웹 페이지 전체'(document)를 대상하고 있다

따라서 $(function( ) { ... } )는 "웹 페이지를 모두 읽어 들이고 준비가 되었다면 처리하시오"라는 명령어의 생략형

ready( ... )의 괄호에는 function( ... )이라고 기술하고 그 안에는 실행하고 싶은 처리를 기술

괄호 안에 function( ){ ... }이라고 쓰는 것은 ready( )뿐만 아니라 이벤트를 감지하여 처리를 실행하는 경우에 모두 적용되는 사안


$( 셀렉터 ).이벤트(function( ) {

    $(셀렉터 ).명령

});

 

다른 이벤트 처리에도 ready( )는 필수 항목

ready( )는 이벤트를 감지하는 명령의 한 종류이지만, 또 다른 이벤트를 감지하고 싶은 경우에도 사용되며

$(function ( ) { ... } ) 안에 처리 내용을 기술

예를들어, 아래의 예제는 "button 태그가 클릭되었다면 처리를 실행한다."라는 스크립트입니다.

자세한 것은 뒤에 다시 이야기하겠지만,

click( )은 "특정 태그가 클릭되었다."라는 이벤트를 감지하는 명령

$("botton").click(function( ) {

       button 태그가 클릭되었을 때 실행하는 처리

});

브라우저는 페이지 로딩이 아직 끝나지 않았기 때문에 button 태그의 존재를 발견할 수 없음

여기서 다음과 같이 스크립트 전체를 $(function( ) { ... }) 안에 기술

$(function( ) {

     $("button").click(function( ) {

              button 태그가 클릭되었을 때 실행하는 처리

     });

});

이것으로 브라우저는 script 태그의 위치에 관계없이 button 태그를 발견할 수 있고,

처리는 페이지 로딩이 완료된 후 실행 됨

$( function( ) { ... })를 사용하면 button 태그가 클릭된 타이밍에 실행하고 싶은 처리를 설정할 수 있음

제이쿼리를 사용하는 경우에는 항상 $( function( ) { ... })의 안에 스크립트를 기술한다는 것을

미리 기억해 두기!


click( )의 기본적인 작성법

click( )은 ready( )와 같이 괄호 안에 function( ) { ... }을 기술하고 그 안에 실행하고 싶은 처리를 기술


$(셀렉터).click(function( ) {

            셀렉터로 지정한 태그가 클릭되었을 때 실행하는 처리

});

 

실무에서 자주 나타나는 함정

a 태그에 설정한 click 이벤트 처리가 동작하지 않음!

click( )은 셀렉터로 임의의 태그를 지정할 수 있지만, 클릭되며 href 속성에 링크되어 있는 곳으로 이동하는

a 태그를 지정하면 어떻게 될까요?

아래의 샘플을 실행해 보기!!

<javascript>

$(function( ) {

      $("a").click(function( ) {

             $("img").attr("src", "sea.jpg").attr("alt","바다");

    });

});


<html>

<a href = "sea.jpg">화면을 변경 </a>

<p><img src = "flower.jpg" alt = "꽃"/></p>


a 태그를 클릭하면 click 이벤트가 발생하고 제이쿼리의 명령이 실행됨

그렇지만 다음 순간 웹 브라우저는 a 태그의 href 속에 설정되어 있는 링크의 URL을 열어버림

이 문제를 피하는 방법은 몇 가지가 있다!




<  방법 1  > javascript:void( 0 )를 사용한다.

a 태그의 href 속성에 javascript:void( 0 )라고 설정하여 a 태그의 기능을 무효화하는 방법

< a href = "javascript:void( 0 )" > 화면을 변경 </a>

 <p><img sec = "flower.jpg" alt = "꽃" /></p>


그러나 이 방법은 유저가 javascript를 (사용안함)으로 설정한 경우에는 링크를 클릭해도 아무런 변화가 일어나지 않기 떄문에

좋은 방법이라고는 할 수 없음!!!




<  방법 2  > return false;를 추가한다.

click 이벤트의 마지막 부분에 return false;를 기술하는 방법



$(function( ) {

      $("a").click(function( ) {

             $("img").attr("src", "sea.jpg").attr("alt","바다");

              return false;

    });

});


< a href = "javascript:void( 0 )" > 화면을 변경 </a>

<p><img src = "flower.jpg" alt ="꽃"/></p>




위 경우에도 a 태그가 클릭되었을 때는 제이쿼리 명령만 실행되고 href 속성에 설정된 링크로는 이동하지 않음

한편 자바스크립트가 < 사용 안함 >으로 설정되어 있는 경우는 a 태그의 링크가 유효해지기 때문에

제이쿼리 명령으로지정하고 있는 내용에 가까운 url을 href 속성에 설정해 두면 유저는 최소한의 정보를 얻을 수 있게 됨

 

더블 클릭 이벤트를 감지하는 dbclick( )

특정 태그가 더블 클릭되었을 때 어떤 처리를 실행하고 싶을 경우 dbclick( )을 사용

 

$(셀렉터).dbclick(function( ) {

      셀렉터로 지정한 태그가 더블 클릭되었을 때 실행하는 처리

});

 

마우스의 버튼 조작을 감지하는 mousedown( ) / mouseup( )

특정 태그 위에 마우스의 특정 버튼이 눌렸다가 떨어질 때 처리를 실행

mousedown( )은 특정 태그 위에 마우스 포인터가 있는 상태에서 마우스 버튼의 눌렸을 경우 처리를 실행


$(셀렉터).mousedown(function( ) {

      셀렉터로 지정한 태그에 마우스 버튼이 눌렸을 경우 실행할 처리

});

 

mouseup( )은 특정 태그 위에 마우스 포인터가 있는 상태에서 이미 눌렸 있던 버튼이 떨어지는

타이밍에 처리를 실행


$(셀렉터).mouseup( function( ){

      셀렉터로 지정한 태그 위에서 눌려 있던 마우스가 떨어질 때 실행하는 처리

});

 

 

클릭될 때마다 다른 처리를 실행하는 toggle( )

클릭될 때마다 다른 처리를 실행하고 싶은 경우에 편리하게 사용되는 것이 toogle( )


$( function( ) {

    $(셀렉터).toggle(function( ){

        처음 클릭되었을 때 실행할 처리

     }, function( ) {

        두 번째 클릭되었을 때 실행할 처리

     }, function( ) {

         (중략...)

     }, function( ) {

       마지막 클릭되었을 때 실행할 처리

     });

});

 


 

마우스오버 / 마우스아웃을 감지하는 mouseover( ) / mouseout( )

특정 태그 위에 마우스가 겹쳐진 타이밍을 감지하여 처리를 실행

 

mouseover( )

특정 태그상에 마우스 포인터가 겹쳐졌을 경우 처리를 실행


$(셀렉터).mouseover( function( ) {

      셀렉터로 지정한 태그에 마우스 포인터가 겹쳐졌을 경우에 실행하는 처리

});

 

mouseout( )

특정 태그 위에서 마우스 포인터가 태그 밖으로 벗어났을 경우철리를 실행


$(셀렉터).mouseout( function( ) {

     셀렉터로 지정한 태그에 마우스 포인터가 벗어났을 경우에 실행하는 처리

}

 

마우스의 움직임에 맞춰서 처리를 실행하는 mousemove( )

특정 태그 위에 마우스 포인터가 움직이는 경우에 처리를 실행


$(셀렉터).mousemove(function( ) {

         셀렉터로 지정한 태그 위에서 마우스가 움지기고 있을 경우에 실행하는 처리

})

 

이벤트 발생시에 한 번만 처리를 실행하는 one( )

지정한 태그에서 발생한 이벤트에 대한 한 번만 실행되도록 하는 명령어가 one( )


$(셀렉터).one("이벤트 발생 조건", function( ) {

        이벤트 발생시에 실행하는 처리

}

 

설정되어 있는 이벤트 처리를 취소하는 unbind( )

설정되어 있는 이벤트 처리를 취소하는 명령

$(셀렉터).unbind("이벤트 발생 조건");

 

앞으로 추가될 태그에 이벤트 처리를 설정할 수 있는 live( )

실행한 시점에 존재하는 태그와 더불어 앞으로 추가될 태그에도 이벤트 처리를 설정할 수 있는 명령어


$(셀렉터).live("이벤트 발생 조건", function( ){

      실행하는 처리

});