FrontEnd

JQuery 관련 기초 내용

Dean83 2022. 3. 24. 22:40

https://jsfiddle.net/boilerplate/jquery --> 간단히 코드 작성후 테스트 가능

 1. JQuery
       - JavaScript 라이브러리
       - HTML 태그를 선택하고, 해당 태그의 액션을 수행함
       - Head 또는 Body에 작성가능.
          <Head> .... $("태그명" 등 html요소).액션명(); ... </Head>

     1.1. 기본 문법
               - $("html태그명" 등 html요소).action()
               - 예 :
- $(this).hide() : 현재 요소를 숨깁니다.

 

- $("p").hide() : 모든 <p> 요소를 숨깁니다.

  - $(".test").hide() : 클래스가 "test"인 모든 요소를 숨깁니다.

  - $("#test").hide() : 아이디가 "test"인 요소를 숨깁니다.

     1.2. Document Ready
            - 문서가 로딩되기전에 작업을 수행하면, 오류가 날 수 있음
               예) 아직 생성되지 않은 태그를 hide, 이미지 사이즈 가져오기 등
            - 따라서, 문서가 로딩되고 난 후에 동작하는것이 바람직함. 
            - $(document).ready() 로 동작.
 

$(document).ready(function(){

   // jQuery methods go here...

});

    1.3. Selector
            - $() 괄호안에 해당하는것으로, id, class, type, attribute, 태그명 등 html 요소를 찾음 (CSS와 동일)
            - id 를 검색하기 위해서는, $("#id") 으로, #을 붙여야 하며, id는 페이지 내에서 유일해야함.
            - class를 검색하기 위해서는, $(".class명") 처럼, .클래스명 으로 작성 

 

 1.4. Action
            1.4.1. Event
                      - $()이후 작성하는 액션으로, 이벤트 관련한 항목들 정리
                        

                      - 사용 예
                         - $("p").click(); : P 태그 클릭
                         - $("p").click(function(){  함수 내용  }); : 클릭시 호출할 함수
                         - $("input").focus(function(){ $(this).css("background-color", "#cccccc");});  : 인풋 필드에 포커스 on 되었을경우. focus 대신 blur 사용시, 포커스 잃었을경우

            1.4.2. hide, show
                      - 요소를 감추거나 보일때 사용. 인자값으로 speed, callback이 있음.
                         => hide(speed,callback);

            1.4.3. toggle
                      - 감춰진 요소는 보여주고, 보여진 요소는 감추는 메소드. 인자값은 hide, show와 동일

            1.4.4. fade
                      - fadein, fadeOut,fadeToggle, fadeTo 가 있으며, 인자값은 speed, callback
                        예 : $("button").fadeIn()
                      - fateTo 는, 투명도 조절이 가능함. speed, opacity, callback의 인자값을 가짐

            1.4.5. slide
                      - slideDown, slideUp, slideToggle 이 있으며, 인자값은 speed, callback

            1.4.6. animate
                      - 인자값으로 params, 속도, callback을 가짐
                      - params의 경우, CSS 속성으로, 여러개를 줄 수 있음
                        예:
  $("div").animate({left:'250px'}); : 오른쪽으로 이동함 (left 0 -> 250으로 이동)

$("div").animate({
        left: '250px',
        opacity: '0.5',
        height: '150px',
        width: '150px'
    });

=> 다중 속성 적용


$("button").click(function(){
    $("div").animate({
        left: '250px',
        height: '+=150px',
        width: '+=150px'
    });
}); 
 => +=을 이용하여 상대값을 적용


$(document).ready(function(){
$("button").click(function(){
var div=$("div");
div.animate({height: '300px', opacity: '0.4'}, "slow");
div.animate({width: '300px', opacity: '0.8'}, "slow");
div.animate({height: '100px', opacity: '0.4'}, "slow");
div.animate({width: '100px', opacity: '0.8'}, "slow");
});
});

=> div를 먼저 변수로 할당받고, 해당 변수.animate를 통해 동작

            1.4.6. stop
                      - 애니메이션을 비롯한 특별한 효과가 끝나기 전에 정지함. 
                      - 인자값 : stopAll,gotoEnd
                      - 예 : $("#panel").stop();

            1.4.7. Chaining
                      - 여러 액션을 이어서 동작하기 위함. 
                      - action1().action2()..... 처럼 .액션 으로 이어서 동작하면 됨.
                      - 왼쪽 -> 오른쪽 순으로 순차적으로 실행됨.

            1.4.8. 컨텐츠와 어트리뷰트 
                      - 항목을 가져오거나, 설정함
                      - 컨텐츠 : text(), html(), val()
                      - 어트리뷰트 : attr()

                      1.4.8.1. 컨텐츠
                                   - $("#text1").text () : 아이디가 text1인 항목의 태그 안의 text를 가져오거나 설정
                                   - $("#text1").html() : 아이디가 text1인 항목의 태그 안의 html을 가져오거나 설정
                                   - $("#input1").val() : 아이디가 input1인 항목의 서식필드 값을 가져오거나 설정
 

<p id="test">This is some <b>bold</b> text in a paragraph.</p>의


$("#test").html();  => This is some <b>bold</b> text in a paragraph.가 표시됨.
$("#test").text(); => This is some bold text in a paragraph. 가 표시됨

======== val

 

<input id="test1" value="aa" /> 

$("#test1").val(); : aa 값을 가져옴
$("#test1").val("bb");으로 할 경우, 값이 bb로 변경됨. 

 

  1.4.9. Remove, empty
                      - Remove : 요소와 해당 자식요소까지 모두 삭제
                      - empty : 선택된 요소의 자식 제거
                         예 : $("div").remove() : div의 모든 자식요소 삭제
                               $("p").remove(".italic") : p 자식중, 클래스가 italic인 자식 삭제 

            1.4.10. CSS
                        - addClass()
                        - removeClass()
                        - toggleClass()
                        - css()

                        1.4.10.1. add, remove,toggleClass
                                      - css 항목을 추가, 삭제, 토글
                                      - 다음의 style이 있다고 할때, 

<style>
.important {
    font-weight: bold;
    font-size: xx-large;
}
.blue {
    color: blue;
}
</style>

                                   $("h1, h2, p").addClass("blue"); : h1, h2, p 태그에 blue 속성 적용
                                   $("h1, h2, p").removeClass("blue"); : h1, h2, p 태그에 blue 속성 제거
                                   $("h1, h2, p").toggleClass("blue"); : h1, h2, p 태그에 blue toggle 적용

                        1.4.10.1. css
                                      - 하나 이상의 스타일 속성을 설정하거나 반환함.                                     
 

<p style="background-color:#ff0000">This is a paragraph.</p>
<p style="background-color:#00ff00">This is a paragraph.</p>
<p style="background-color:#0000ff">This is a paragraph.</p>

이 있고, 
$("p").css("background-color"); 를 수행할경우, 3개중 가장 첫번째 항목을 반환함. 

======== 설정 =============
$("p").css("background-color","yellow"); 를 수행할경우, 위의 3개 모두 yellow로 변경됨

=========다중 설정==========
$("p").css({"background-color": "yellow", "font-size": "200%"});
처럼, , 를 통해 다중 설정이 가능함.

            1.4.11. 노드 탐색
                        - 태그는 통상 부모, 자식, 형제의 트리구조로 구성되어 있으므로, 노드 탐색이 가능함. 

                        1.4.11.1. 상위 탐색
                                       - parent : 상위 부모 노드 리턴
                                       - parents() : 상위 모든 부모 리턴 (루트까지)
                                       - parentsUntil() : 검색조건에 맞는 부모까지 리턴
                                         => $("p").parentsUntil("div"); => p의 부모중 div까지 리턴

                        1.4.11.2. 하위탐색
                                       - children : 1단계 자식 노드들 리턴
                                          => $("p").children ("div"); => p의 자식중 div만 리턴
                                       - find() : 하위 자식 모두 리턴
                                          => $("p").find("*");  => p의 하위항목 모두 리턴

                        1.4.11.1. 동위 탐색
                                       - siblings() : 모든 동위 노드
                                       - next() : 다음 노드 1개
                                       - nextAll() : 다음 노드 모두
                                       - nextUntil() : 검색 조건에 맞는 다음 노드들
                                       - prev() : 이전 노드 1개
                                       - prevAll() : 이전 모든 노드들
                                       - prevUntil() : 검색 조건에 맞는 노드들

            1.4.12. 필터
                        - first() : 조건의 첫번째 항목 리턴
                        - last() : 조건의 마지막 항목 리턴
                        - eq() : 괄호 안에 숫자를 입력하며, 해당 인덱스의 항목 리턴
                        - filter() : 괄호 안에 조건을 입력하고, 해당 조건에 맞는 항목 리턴
                           => $("p").filter(".intro"); => p태그 중 class가 intro인 항목
                        - not() : 괄호 안에 조건을 입력하고, 해당 조건이 아닌 항목 리턴

 2. Ajax with JQuery
       - HTTP get, post를 사용하여 외부 서버와 통신을 하기 위함.
       - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 추가

     2.1. load
            - 서버 혹은 파일로부터 데이터를 로드
            - $("html요소").load(url,data,callback);
            - url만 필수이며, data, callback은 선택사항임.
            - callback 함수의 경우, responseTxt, statusTxt,xhr의 인자값이 필요함
               - responseTxt : 호출 성공시, 반환값
               - statusTxt : 호출 성공 여부 판단. "success"나 "error"
               - xhr : XMLHttpRequest 객체
            - 예 : 

 $("#div1").load("demo_test.txt", function(responseTxt, statusTxt, xhr){
            if(statusTxt == "success")
                alert("External content loaded successfully!");
            if(statusTxt == "error")
                alert("Error: " + xhr.status + ": " + xhr.statusText);
        });

     2.2. get, post
            - get : 서버로부터 데이터를 가져옴
            - post : 서버로부터 데이터를 가져오며, 데이터를 캐시하지 않음. 요청시 데이터 전송하기도 함
            - $.get(URL,callback); 및 $.post(URL,data,callback);으로 호출함. 둘다 URL은 필수이며, 나머지는 옵션
            
            2.2.1. get
                       - 예 : 

$.get("url주소", function(data, status){
            alert("Data: " + data + "\nStatus: " + status);
        });

            2.2.2. post
                       - 예 : 

 $.post("url주소",
        {
          // 상황에 맞는 데이터. 
          name: "Donald Duck",
          city: "Duckburg"
        },
        function(data,status){
            alert("Data: " + data + "\nStatus: " + status);
        });

     2.3. no conflict
            - jquery에서는 $를 사용하는데, 다른 프레임워크에서도 동일하게 $를 사용할 시 둘중 하나는 동작하지 않음.
            - no conflict를 통해 $ 대신 다른 문자열로 치환하여 작성 가능함. 
            - 예 : 

var jq = $.noConflict();
jq(document).ready(function(){
    jq("button").click(function(){
        jq("p").text("jQuery is still working!");
    });
});

또한, 함수 내에서 제한적으로 사용되도록 할 수 있음. 

$.noConflict();
jQuery(document).ready(function($){
    $("button").click(function(){
        $("p").text("jQuery is still working!");
    });
});


https://palpit.tistory.com/239?category=843240