[JS] 제이쿼리 jQuery 메소드

merci·2023년 1월 31일
0

JavaScript

목록 보기
6/15

jQuery

크로스 플랫폼을 지원하는 jQuery는 어떠한 브라우저에서도 동일하게 동작한다
브라우저는 html 문서를 로드할 때 DOM 을 생성하고 DOM 을 수정하려면 요소를 선택해야 한다
제이쿼리는 DOM 을 제어하는 라이브러리로 제이쿼리를 사용하기 위해서는 제이쿼리 객체를 생성해야한다

  • 제이쿼리 객체생성 -> jQuery() -> $()

  • 제이쿼리의 구조 $("선택자").이벤트리스너( 콜백함수 )
    해당 이벤트가 발생하면 등록한 함수가 작동한다

  • 콜백 함수에도 $("선택자").제이쿼리메소드() 같은 모양으로 제이쿼리 사용한다

  • 제이쿼리를 사용하기 위해서<head>태그에 아래코드 추가

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<!-- CDN 방식으로 제이쿼리 로딩 -->



제이쿼리로 DOM 제어 해보자

fadeIn(), fadeOut()

<button id="btn1">Click to fade in boxes</button><br><br>
<button id="btn2">Click to fadeOut in boxes</button><br><br>

<div id="div1" style="width:80px;height:80px;display:none;background-color:red;"></div><br>
<div id="div2" style="width:80px;height:80px;display:none;background-color:green;"></div><br>
<div id="div3" style="width:80px;height:80px;display:none;background-color:blue;"></div>
<script>
    $("#btn1").click(function () {   
        $("#div1").fadeIn();  // 메소드 체이닝
        $("#div2").fadeIn("slow");
        $("#div3").fadeIn(2000);
    });
    $("#btn2").click(function () {  
        $("#div1").fadeOut();
        $("#div2").fadeOut("slow");
        $("#div3").fadeOut(2000);
    });
</script>
  • 버튼 누르면 설정한 속도에 맞게 천천히 생성되고 삭제된다


hide(), remove(), empty()

 $("#hide").click(function(){
    $("p").hide();
  });
  
  
  
 $("#remove").click(function(){
    $("#div1").remove();
  });



 $("#empty").click(function(){
    $("#div1").empty();
  });
  • hide() 결과 - element는 있지만 보이지 않음
  • remove() 결과 - div 태그가 사라짐

  • empty() 결과 - 태그는 남아있고 내부가 사라짐


prepend(), append(), before(), after()

요소 추가시에 사용한다

바닐라 자바스크립트는 createElement() 로 태그를 추가하지만 제이쿼리는 문자열에 태그를 넣어도 된다 ( 문자열 리터럴 사용 )

	<div id="comment-box">
        <div id="c-5">댓글5 입니다.</div>
        <div id="c-4">댓글4 입니다.</div>
        <div id="c-3">댓글3 입니다.</div>
        <div id="c-2">댓글2 입니다.</div>
        <div id="c-1">댓글1 입니다.</div>
	</div>

    <button onclick="btn1()">prepend</button>
    <button onclick="btn2()">append</button>
    <button onclick="btn3()">before</button>
    <button onclick="btn4()">after</button>
    <button onclick="btn5()">remove</button>
    <button onclick="btn6()">empty</button>
<script>
   function btn1(){
       $("#comment-box").prepend(`<div id="c-6">prepend 입니다.</div>`); 
                                       // 백틱으로 넣으면 오류발생하지 않음         
   }
   function btn2(){
       $("#comment-box").append(`<div id="c-1">append 입니다.</div>`);   
   }
   function btn3(){
       $("#comment-box").before(`<div id="c-11">before 입니다.</div>`); 
   }
   function btn4(){
       $("#comment-box").after(`<div id="c-12">after 입니다.</div>`);  
   }
   function btn5(){
       $("#comment-box").remove();
   }  
   function btn6(){
       $("#comment-box").empty(); 
   }  
</script>
  • 기본
  • 추가되는 위치
  • empty
  • remove


text(), html(), val()

요소를 수정하거나 가져올때 사용한다

  • text(), html(), val() 는 모두 get과 set의 기능이 있다

  • text() - 내부 텍스트에 접근
    html() - 태그까지 포함해서 접근
    val() - 태그의 value에 접근

<body>
    <p id="test">This is some <b>bold</b> text in a paragraph.</p>
    <p id="content">...</p>
    <input type="text" name="" id="title" value=""><br>

    <button id="btn1">Show Text</button>
    <button id="btn2">Show HTML</button>
    <button id="btn3">Set HTML</button>
    <button id="btn4">Show VAL</button>

    <script>
        $("#btn1").click(function () {
            alert("Text: " + $("#test").text());
        });
        $("#btn2").click(function () {
            alert("HTML: " + $("#test").html());
        });
        $("#btn3").click(function () {
            $("#content").html("안녕")
        });
        $("#btn4").click(function () {
            $("#title").val("제목입니다")
        });   
    </script>
</body>
  • 기본
  • Show Text 버튼 결과
  • Show HTML 버튼 결과
  • Set HTML 버튼 결과
  • Show VAL 버튼 결과


비밀번호 체크할 때도 사용 가능하다

<!-- 비밀번호 입력만 만들었음 -->
<form action="join.html" method="post" onsubmit="return valid()">   

    <input id="password" type="text" name="password" value="" 
    			placeholder="Enter password" required><br>
    <input id="passwordCheck" type="text" value="" 
    			placeholder="Enter password" required><br>
                
    <button type="submit">회원가입</button>
</form>

<script>
    function valid(){
        let password1 = $("#password").val();
        let password2 = $("#passwordCheck").val();
        if( password1 !== password2 ){
            alert('비밀번호가 맞지 않습니다.');
            return false;
        }else {
            return true;
        }
    }
</script>

form 태그의 onsubmit 이 true 일 경우에만 action 이 동작한다
valid() 함수를 만들고 boolean 값을 리턴하도록 만들었다

  • 입력 폼
  • 입력한 비밀번호가 다를때


addClass(), removeClass(), toggleClass()

클래스 선택자 수정 - addClass(), removeClass()

<style>
    .important {
        font-weight: bold;
        font-size: xx-large;
    }
    .blue { color: blue; }
</style>
<body>
    <div id="div1">This is some text.</div>
    <div id="div2">This is some text.</div><br>    

    <button id="btnAdd">Add classes to first div element</button>
    <button id="btnRemove">Remove classes to first div element</button>
    
    <script>
        $("#btnAdd").click(function () {
            $("#div1").addClass("important blue ten"); // 클래스 여러개 추가 가능
        });
        $("#btnRemove").click(function () {
            $("#div1").removeClass("blue");
        });
    </script>
</body>
  • 기본 - 클래스 없음

  • addClass 버튼 클릭 - 3개의 클래스 추가

  • removeClass 버큰 클릭 - blue 클래스 삭제


클래스 선택자 수정 - toggleClass()

이번에는 아이콘을 이용할 예정이므로 title 아래 3줄의 cdn을 추가했다
아이콘을 이용해서 좋아요 버튼에 사용할 하트를 만들어 보자

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
    <script src="https://kit.fontawesome.com/0d1c1758fd.js" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css" />
    
    <style>
        .my-xl {
            font-size: 200px;
            color: 000;
        }
        .my-cursor{ cursor: pointer; }
        .my-cursor:hover{ color: red; }
        .on-Clicked{ color: red; }
    </style>
</head>
<body>
    <i id="heart" class="fa-regular fa-heart my-xl my-cursor"></i>
</body>

<script>
    $("#heart").click(()=>{
        $("#heart").toggleClass("fa-solid");
        $("#heart").toggleClass("on-Clicked");
    });
</script>
</html>
  • 기본
  • 마우스 올리면
  • 클릭하면
  • 한번 더 클릭하면


slideToggle()

메뉴 슬라이드

메뉴 박스와 버튼을 만들고

<div id="box">
	<ul>
		<li></li>
		<li>회사 안내</li>
		<li>업무 내용</li>
		<li>고객 지원</li>
		<li>문의</li>
	</ul>
</div>
<div id="box_btn">Menu</div>


css로 닫아 놓는다

#box {
	display: none;
}

자바스크립트로 토글 기능을 추가한다

<script>
	$('#box_btn').on('click', function(){
		$('#box').slideToggle();
	});
</script>

제어쿼리의 on() 으로 리스너를 등록한다
slideToggle()을 누르면 메뉴가 슬라이드 되면서 열리고 다시 누르면 닫힌다
slideToggle()의 파라미터에 fast, slow, 1000 같은 값을 넣으면 슬라이드 속도가 달라진다

profile
작은것부터

0개의 댓글

관련 채용 정보