객체조작메소드

  속성 조작 메소드와 수치 조작 메소드 그리고 객체편집메소드로 나눌 수 있다.

  

  속성 조작 메소드는 요소의 속성을 바꿀 때 사용하고, 수치 조작 메소드는 요소의 너비값 또는 높이값 같은

  수치를 바꿀 때 사용한다.

  이 두 메소드는 선택한 요소의 속성을 바꾸는 메소드이므로 성격이 비슷하다고 볼 수 있다.

  

  객체편집 메소드는 말 그대로 객체를 생성하거나 삭제 또는 복제 할 때 사용한다.

 

  예를 들어 제이쿼리에 객체를 조작하거나 생성하는 메소드는 다음과 같은 기능을 가진 메소드를 말한다.

 

  1. 선택한 요소에 새 요소를 만든다. -새 요소 생성

<div></div>                 ->                   <div><p>내용</p></div>

  2. 요소를 복제하여 선택한 요소에 삽입한다. - 복제

<p>내용1</p>              ->                    <p>내용1</p> 
                                                         <p>내용1</p>

  3. 선택한 요소를 삭제한다. -삭제

<div><p>내용</p></div>              ->            <div></div>

  4. 선택한 요소의 속성을 변경 또는 추가한다. 그리고 기존의 속성을 삭제도 한다 - 속성 변환

<img src="bnt_on.gif" alt="버튼1"/>      ->     <img src="bnt_out.gif" alt="버튼1"/>

 

속성 조작 메소드

  요소의 속성을 조작할 때 사용하는 메소드이다. 다음은 속성 조작 메소드의 종류와 사용법을 정리한 표이다.

종류 사용법 설명
html()
html(“새 요소”)
$(“요소 선택”).html();
$(“요소 선택”).html(“새 요소”);
선택한 요소의 하위 요소를 가져온다.
선택한 요소의 하위 요소를 모두 제거하고, 그 위치에 지정한 새 요소를 생성한다.
text()
text(“새 텍스트”)
$(“요소 선택”).text();
$(“요소 선택”).text(“새 텍스트”);
선택한 요소가 감싸는 모든 텍스트를 가져온다.
선택한 요소의 하위 요소를 모두 제거하고, 그 위치에 지정한 새 텍스트를 생성한다.
attr(“속성명”)
attr(“속성명”,”새값”)
$(“요소 선택”).attr(“속성명”);
$(“요소 선택”).attr(“속성명”,”새값”);
선택한 요소의 지정한 속성(attribute)값을 가져온다.
요소를 선택하여 지정한 속성에 새 값을 적용한다.
removeAttr(“속성명”) $(“요소 선택”).removeAttr(“속성명”); 선택한 요소의 지정한 속성만 제거한다.
prop(“상태 속성명”)
prop(“상태 속성명”, 새 값)
$(“요소 선택”).prop(“상태 속성명”);
$(“요소 선택”).prop(“상태 속성명”,”새 값”);
선택한 요소의 상태 속성값을 가져온다.
요소를 선택하여 상태 속성에 새 값을 적용한다.
val()
var(“새 값”)
$(“요소 선택”).val();
$(“요소 선택”).val(“새 값”);
선택한 폼 요소의 value값을 가져온다.
폼 요소를 선택하여 value 속성에 새 값을 적용한다.
css(“속성명”)
css(“속성명”,”새값”)
$(“요소 선택”).css(“속성명”);
$(“요소 선택”).css(“속성명”,”새 값”);
선택한 요소의 지정한 스타일(CSS)속성 값을 가져온다.
요소를 선택하여 지정한 스타일 속성에 새 값을 적용한다.
addClass(“class ”) $(“요소 선택”).addClass(“class ”); 선택한 요소의 class속성에 새 값을 추가한다.
removeClass(“class ”) $(“요소 선택”).removeClass(“class ”); 선택한 요소의 class 속성에서 지정한 값만 제거한다.
toggleClass(“class ”) $(“요소 선택”).toggleClass(“class ”) 선택한 요소의 class값에 지정한 값이 포함되어 있으면 제거하고 속성값이 없으면 추가한다.
hasClass(“class ”) $(“요소 선택”).hasClass(“class ”) 선택한 요소의 class값에 지정한 클래스 값이 포함되어 있으면 true, 없으면 false를 반환한다.

 

html()/text() 메소드

  html()메소드는 선택한 요소의 하위 요소를 가져와 문자열로 반환하거나 하위 요소를 전부 제거하고 새 요소로 바꿀 때

  사용한다.

  text()메소드는 선택한 요소에 포함되어있는 전체 텍스트를 가져오거나 선택한 하위 요소를 전부 제거하고 새 텍스트를

  생성할 때 사용한다.

1. $("요소 선택").html();
2. $("요소 선택").html("새 요소");
3. $("요소 선택").text();
4. $("요소 선택").text("새 텍스트");

  1은 선택한 요소의 하위 요소를 가져와 문자열로 반환한다.

  2는 선택한 요소의 하위 요소를 전부 제거하고 지정한 새 요소를 생성한다.

  3은 선택한 요소의 텍스트만 가져온다.

  4는 선택한 요소의 하위 요소를 전부 제거하고 지정한 텍스트를 생성한다.

<script>
  $(function(){
    var result_1 = $("#sec_1").html();
      console.log(result_1);
      //id 값이 "sec_1"인 하위 요소를 문자열로 가져와
      //result_1에 저장한다.
      $("#sec_1 p").html("<a href=\"#\">Text1</a>");
       //id값이 "sec_1"인 요소의 하위 요소 중
       //<p>요소의 하위 요소를 새 요소로 바꾼다.

    var result_2 = $("#sec_2").text();
      console.log(result_2);
      //id값이 "sec_2"인 요소의 텍스트를 result_2에 저장
      $("#sec_2 h2").text("text()");
       //id값이 "sec_2"인 요소의 하위 요소 중 <h2> 요소의 하위 요소를
       //모두 제거. 그 다음 새로운 텍스트를 생성.
  });
</script>
  </head>
  <body>
    <h1>
      <strong>객체 조작 및 생성</strong>
    </h1>
    <section id="sec_1">
      <h2>
        <em>html()</em>
      </h2>
      <p>내용1</p>
    </section>
    <section id="sec_2">
      <h2>
        <em>텍스트()</em>
      </h2>
      <p>내용2</p>
    </section>
  </body>

 

attr()/removeAttr()메소드

  attr()메소드는 선택한 요소에 새 속성을 생성하거나 기존의 속성을 변경할 때 또는 요소의 속성값을 불러올 때

  사용한다.

  removeAttr()메소드는 선택한 요소에서 기존의 속성을 삭제할 때 사용한다.

 

  attr()메소드의 기본형은 다음과 같다.

1. $("요소 선택").attr("속성명");
2. $("요소 선택").attr("속성명","새 값");
3. $("요소 선택").attr({"속성명1":"새 값1","속성명2":"새 값2"..."속성명n":"새 값n"});

  1은 선택한 요소의 지정한 속성값을 가져온다.

  2는 요소를 선택하여 지정한 속성값을 적용한다.

  3은 요소를 선택하여 지정한 여러개의 속성값을 적용한다.

 

  removeAttr()메소드의 기본형은 다음과 같다.

$("요소 선택").removeAttr("속성");

  선택한 요소에서 지정한 속성을 삭제한다.

 

  다음 예제는 attr()메소드와 removeattr()메소드가 어떻게 작용하는지에 대한 예제이다.

<script>
  $(function(){
    var srcVal=$("#sec_1 img").attr("src");
    console.log(srcVal);
    //id값이 "sec_1"인 요소의 하위 <img>요소를 선택하여
    //"src" 값을 srcVal에 저장한다.

    $("#sec_1 img")
    .attr({
      "width":200,
      "src":srcVal.replace("1.jpg","2.jpg"),
      "alt":"바위"
    })
    .removeAttr("border");
  });
</script>
  </head>
  <body>
    <h1>
      <strong>객체 조작 및 생성</strong>
    </h1>
    <section id="sec_1">
      <h2>이미지 속성</h2>
      <p>
        <img src="images/math_img_1.jpg" alt="가위" border="2">
      </p>
    </section>
  </body>

 

addClass()/removeClass()/toggleClass()/hasClass()메소드

  addClass()메소드는 선택한 요소에 클래스를 생성하고, removeClass()메소드는 선택한 요소에서 지정한 클래스를

  삭제한다. toggleClass()메소드는 선택한 요소에 지정한 클래스가 없으면 생성하고, 있을 경우에는 삭제한다.

  hasClass()메소드는 선택한 요소에 지정한 클래스가 있으면 true를 반환하고, 없으면 false를 반환한다.

  

  각각의 기본형은 다음과 같다.

1. $("요소 선택").addClass("class 값");
2. $("요소 선택").removeClass("class 값");
3. $("요소 선택").toggleClass("class 값");
4. $("요소 선택").hasClass("class 값");

  1은 요소를 선택하여 지정한 class값을 생성한다.

  2는 요소를 선택하여 지정한 class값을 삭제한다.

  3은 요소를 선택하여 지정한 class값이 있으면 삭제하고 없으면 생성한다.

  4는 선택한 요소에 지정한 class값이 있으면 true, 없으면 false를 반환한다.

 

<script>
  $(function(){
    $("#p1").addClass("aqua");
    $("#p2").removeClass("red");
    $("#p3").toggleClass("green");
    $("#p4").toggleClass("green");
    $("#p6").text($("#p5").hasClass("yellow"));
  });
</script>
<style>
  .aqua{background_color:#0ff;}
  .red{background_color:#f00;}
  .green{background_color:#0f0;}
  .yellow{background_color:##f0;}
</style>
  </head>
  <body>
   <p id="p1">내용1</p>
   <p id="p2" class="red">내용2</p>
   <p id="p3">내용3</p>
   <p id="p4" class = "green">내용4</p>
   <p id="p5" class = "yellow">내용5</p>
   <p id="p6"> </p>
  </body>

val()메소드

  선택한 폼 요소의 value속성값을 가져오거나 새 값을 적용할 때 사용한다.

  기본형은 다음과 같다.

1. $("요소 선택").val();
2. $("요소 선택").val("새 값");

  1은 선택한 폼 요소의  value 속성값을 가져온다.

  2는 요소를 선택하여 value 속성에 새 값을 적용한다.

 

  다음은 value() 메소드 작동 예제이다.

<script>
  $(function(){
    var result_1=$("#user_name").val();
    console.log(result_1); //용대리

    $("#user_id").val("javascript");

    var result_2=$("#user_id").prop("defaultValue");
    console.log(result_2); //hello
  });
</script>
  </head>
  <body>
  <h1>객체 조작 및 생성</h1>
  <form action="#" id="form_1">
    <p>
      <label for="user_name">이름</label>
      <input type="text" name="user_name" id="user_name" value="용대리">
    </p>
    <p>
      <label for="user_id">아이디</label>
      <input type="text" name="user_id" id="user_id" value="hello">
    </p>
  </form>
  </body>

prop()메소드

  선택한 폼 요소(선택상자, 체크박스, 라디오 버튼)의 상태 속성값을 가져오거나 새롭게 설정할 때 사용한다.

  그리고 선택한 요소의 태그명, 노드타입, 선택상자의 선택된 옵션의 인덱스 값도 알 수 있다.

1. $("요소 선택").prop("[checked | selected]");
2. $("요소 선택").prop("[checked | selected]", [true | false]);
3. $("요소 선택").prop("[tagName | nodeType | selectedIndex | defaultValue]");

  1번은 선택한 폼 요소(체크밗, 라디오버튼, 선택상자)가 체크(checked)된 상태인지, 선택(selected) 상태인지 알 수 있다.

  예를 들어 선택한 요소가 체크박스이고 체크된 상태에서 prop("checked")를 적용하였다면 true를 아니면 false를 

  반환한다.

  2번은 폼 요소를 선택하여 체크 또는 선택 상태를 바꿀 수 있다.

  3번은 선택한 요소의 태그명이나 노드타입, 선택된 옵션의 인덱스 값을 구한다.

  이때 폼 요소에 prop("defaultValue")를 사용하면 사용자가 value 속성값을 바꿔도 초기의 value 속성값을 가져온다.

<script>
  $(function(){
    var result_1=$("#chk1").prop("checked");
    console.log(result_1); //false
    //id값이 "chk1"인 요소가 체크된 상태이면 true를 반환하여
    //result_1에 저장한다.(반대의 경우에는 false)

    var result_2=$("#chk2").prop("checked");
    console.log(result_2)  //true

    var result_2=$("#chk3").prop("checked", true);
    //id 값이 "chk3"인 요소의 체크상태를 true로 바꾼다.

    var result_3=$("#se_1").prop("selectedIndex");
    console.log(result_3); //2
    //id값이 "se_1"인 요소의 옵션 중 selected 옵션의 인덱스 값을 가져온다.
  });
</script>
  </head>
  <body>
    <h1>
      <strong>객체 조작 및 생성</strong>
    </h1>
    <form action="#" id="form_1">
      <p>
        <input type="checkbox" name="chk1" id="chk1">
        <label for="chk1">chk1</label>
        <input type="checkbox" name="chk2" id="chk2" checked>
        <label for"chk2">chk2</label>
        <input type="checkbox" name="chk3" id="chk3">
        <label for="chk3">chk2</label>
      </p>
      <p>
        <select name="se_1" id="se_1">
          <option value="opt1">option1</option>
          <option value="opt2">option2</option>
          <option value="opt3" selected>option3</option>
        </select>
      </p>
    </form>
  </body>

  실행하면 체크박스가 체크되고 선택 상자의 옵션 요소 중 선택된 옵션의 인덱스값(2)이 출력된다.

  그리고 "chk3"의 체크박스가 체크된 상태로 바뀐다.

 

수치 조작 메소드

  수치 조작 메소드는 요소의 속성을 조작할 때 사용하는 메소드이다.

  다음은 수치 조작 메소드의 종류와 사용법을 정리한 표이다.

종류 사용법 설명
height() $(“요소 선택”).height();
$(“요소 선택”).height(100);
안쪽 여백과 선을 제외한 높이값을 반환하거나 변환한다.
width() $(“요소 선택”).width();
$(“요소 선택”).width(100);
안쪽 여백과 선을 제외한 너비값을 반환하거나 변환한다.
inneHeight() $(“요소 선택”).inneHeight();
$(“요소 선택”).innerHeight(300);
안쪽 여백을 포함한 높이값을 반환하거나 변환한다.
innerWidth() $(“요소 선택”).innerWidth();
$(“요소 선택”).innerWidth(100);
안쪽 여백을 포함한 너비값을 반환하거나 변환한다.
outerHeight() $(“요소 선택”).outerHeight();
$(“요소 선택”).outerHeight(100);
선과 안쪽 여백을 포함한 높이값을 반환하거나 변환한다.
outerWidth() $(“요소 선택”).outerWidth();
$(“요소 선택”).outerWidth(100);
선과 안쪽 여백을 포함한 너비값을 반환하거나 변환한다.
position() $(“요소 선택”).position().left;
$(“요소 선택’).position().top;
선택한 요소의 포지션 위치값을 반환한다.
offset() $(“요소 선택”).offset().left;
$(“요소 선택”).offset().top;
선택한 요소가 문서에서 수평/수직으로 얼마나 떨어져 있는지에 대한 값을 반환한다.
scrollLeft() $(window).scrollLeft(); 브라우저의 수평 스크롤 이동 높이값을 반환한다
scrollTop() $(window).scrollTop(); 브라우저의 수직 스크롤 이동 너비값을 반환한다

 

요소의 높이/너비 메소드

  height()와 width() 메소드는 여백 및 선 두께를 제외한 순수 요소의 높이값과 너비값을 계산한다.

  innerHeight()와 innerWidth()메소드는 여백을 포함한 요소의 높이값과 너비값을 계산하고,

  outerHeight()와 outerWidth() 메소드는 여백 및 선을 포함한 요소의 높이값과 너비값을 계산한다.

 

  다음은 선택한 요소에 각 메소드를 적용하여 너비값 또는 높이값을 불러왔을때 계산되는 범위를 그림으로 나타낸

  것이다.

  이 메소드들의 기본형은 다음과 같다.

1. $(요소 선택).height(); / $(요소 선택).width();
   $(요소 선택).height(값); / $(요소 선택).width(값);
   
2. $(요소 선택).innerHeight(); / $(요소 선택).innerWidth();
   $(요소 선택).innerHeight(값); / $(요소 선택).innerWidth(값);
   
3. $(요소 선택).outerHeight(); / $(요소 선택).outerWidth();
   $(요소 선택).outerHeight(값); / $(요소 선택).outerWidth(값);

  1은 요소의 높이값과 너비값을 반환 또는 변경한다.

  2는 여백을 포함한 요소의 높이값과 너비값을 반환 또는 변경한다.

  3은 여백 및 선 두께를 포함한 요소의 높이값과 너비값을 반환 또는 변경한다.

 

  다음 예제는 요소의 높이/ 너비 메소드들이 어떻게 사용되는지 보여준다.

<script>
  $(function(){
    var w1 = $("#p1").width();
    console.log(w1);

    var w2=$("#p1").innerWidth();
    console.log(w2);

    var w3=$("#p1").outerWidth();
    console.log(w3);

    $("#p2")
    .outerWidth(100)
    .outerHeight(100);
  });
</script>
<style>
  *{
    padding : 0;
  }

  #p1, #p2{
    width: 100px;
    height: 50px;
    padding: 20px;
    border: 5px solid #000;
    background-color: #ff0;
  }
  </style>
  </head>
  <body>
    <h1>수치 조작 메소드</h1>
    <p id="p1">내용1</p>
    <p id="p2">내용2</p>
  </body>

 

요소 위치 메소드

  요소 위치 메소드에는 position() 메소드와 offset()메소드가 있다.

  position()메소드는 포지션 기준이 되는 요소를 기준으로 선택한 요소에서 가로/세로로 떨어진 위치의 좌표값을

  반환하거나 변경할 때 사용한다. offset()메소드는 문서(document)를 기준으로 선택한 요소의 가로/세로로 떨어진

  위치의 좌표값을 반환하거나 변경할 때 사용한다.

  각 메소드의 기본형은 다음과 같다.

1. $(요소 선택).position().[left | right | top | bottom]
2. $(요소 선택).offset().[left | top]

  1은 포지션 기준이 되는 요소를 기준으로 선택한 요소의 위치 좌표값을 반환한다.

  2는 문서를 기준으로 선택한 요소의 위치 좌표값을 반환한다.

 

  다음은 선택한 요소에 위치 메소드를 적용하여 위치값을 구한 position()과 offset() 메소드의 차이를 그림으로 나타낸

  것이다.

  다음은 요소위치 메소드 사용 예제이다.

  <div id="box_wrap">의 position 속성에는 "relative"값을 적용하고 <p class="box">의 position속성에는

  "absolute"값을 적용했다.

<script>
  $(function(){
    var $txt1=$(".txt_1 span"),
        $txt2=$(".txt_2 span"),
        $box=$(".box");

    var off_t=$box.offset().top;  //100
    var pos_t=$box.poisition().top; //50

    $txt1.text(off_t);
    $txt2.text(pos_t);
  });
</script>
<style>
  *{margib:0;padding:0;}
  #box_wrap{
    width:300px;
    height:200px;
    margin:50px auto 0;
    position:relative;
    background-color:#ccc;
  }
  .box{
    width:50px;height:50px;
    position:absolute;
    left:100px;top:50px;
    background-color:#f00;
  }
  </style>
  </head>
  <body>
    <div id="box_wrap">
      <p class="box">박스</p>
    </div>
    <p class="txt_1">절대 top위치값:<span></span></p>
    <p class="txt_2">상대 top위치값:<span></span></p>
  </body>

스크롤바 위치 메소드

  scrollTop()메소드는 브라우저의 스크롤바가 수직/수평으로 이동한 위치값을 불러오거나 변경할 때 사용한다.

  다음은 scrollTop()메소드의 기본형이다.

1. $(요소 선택).scrollTop(); $(요소 선택).scrollLeft();
2. $(요소 선택).scrollTop(새 값); $(요소 선택).scrollLeft(새 값);

  1은 스크롤바가 수직 또는 수평으로 이동한 위치값을 반환한다.

  2는 입력한 수치만큼 수직 또는 수평으로 스크롤바를 이동시킨다.

 

  다음은 속성과 값에 따른 스크롤바 위치 메소드를 사용한 예제이다.

<script>
  $(function(){
    var topNum=$("h1").offset().top;
    $(window).scrollTop(topNum);

    var sct=$(window).scrollTop();
    console.log(sct);
  });
</script>
<style>
  *{margin:0;padding:0;}
  body{line-height:1;}
  #wrap{
    height:5000px;
    padding-top:2000px;
  }
  </style>
  </head>
  <body>
    <div id="wrap">
      <h1>위치 메소드</h1>
    </div>
  </body>

 

객체 편집 메소드

  선택한 요소를 복제하거나 새 요소를 생성하는 메소드와 복제하거나 새로 생성한 요소를 의도한 위치에 삽입하고

  선택한 요소를 삭제하는 기능을 살펴보자.

 

  다음은 객체편집 메소드의 종류와 사용법을 간략하게 정리한 표이다.

종류 사용법 설명
before() $(“요소 선택”).before(“새 요소”); 선택한 요소의 이전 위치에 새 요소를 추가한다.
after() $(“요소 선택”).after(“새 요소”); 선택한 요소의 다음 위치에 새 요소를 추가한다.
append() $(“요소 선택”).append(“새 요소”); 선택한 요소의 마지막 위치에 새 요소를 추가한다.
appendTo() $(“새 요소”).appendTo(“요소 선택”); 선택한 요소의 마지막 위치에 새 요소를 추가한다.
prepend() $(“요소 선택”).prepend(“새 요소”); 선택한 요소의 맨 앞 위치에 새 요소를 추가한다.
prependTo() $(“새 요소”).prependTo(“요소 선택”); 선택한 요소의 맨 앞 위치에 새 요소를 추가한다
insertBefore() $(“새 요소”).insertBefore(“요소 선택”); 선택한 요소의 이전 위치에 새 요소를 추가한다.
insertAfter() $(“새 요소”).insertAfter(“요소 선택”); 선택한 요소의 다음 위치에 새 요소를 추가한다.
clone() $(“요소 선택”).clone(true or false); 선택한 문서 객체를 복제한다. 이때 인자값이 true일 경우 하위 요소까지 모두 복제하고, false일 경우에는 선택한 요소만 복제한다.
empty() $(“요소 선택”).empty(); 선택한 요소의 하위 내용들을 모두 삭제한다.
remove() $(“요소 선택”).remove(); 선택한 요소를 삭제한다
replaceAll()/
replaceWith()
$(“새 요소”).replace(“요소 선택”);
$(“요소 선택”).replaceWith(“새 요소”);
선택한 요소들을 새 요소로 교체한다.
unwrap() $(“요소 선택”).unwrap(); 선택한 요소의 부모 요소를 삭제한다.
wrap() $(“요소 선택”).wrap(새 요소); 선택한 요소를 새 요소로 각각 감싼다.
wrapAll() $(“요소 선택”).wrapAll(); 선택한 요소를 새 요소로 한꺼번에 감싼다
wrapInner() $(“요소 선택”).wrapInner(새 요소); 선택한 요소의 내용을 새 요소로 각각 감싼다.

 

before()/insertBefore()/after()/insertAfter()메소드

  before()와 insertBefore()메소드는 선택한 요소의 이전 위치에 새 요소를 생성하고, after()와 insertAfter()메소드는

  선택한 요소의 다음 위치에 새 요소를 선택한다.

  각 메소드의 기본형은 다음과 같다.

1. $("요소 선택").before("새 요소");
2. $("새 요소").insertBefore("요소 선택");
3. $("요소 선택").after("새 요소");
4. $("새 요소").insertAfter("요소 선택");

  1과 3, 2와 4는 서로 사용법만 다르고 기능은 같다.

 

  다음은 before(), insertBefore(), after(), insertAfter() 메소드를 사용한 예제이다.

<script>
  $(function(){
    $("#wrap p:eq(2)").after("<p>After</p>");
    $("<p>insertAfter</p>").insertAfter("#wrap p:eq(1)");

    $("#wrap p:eq(1)").before("<p>Before</p>");
    $("<p>insertBefore</p>").insertBefore("#wrap p:eq");
  });
</script>
  </head>
  <body>
    <div id="wrap">
      <p>내용1</p>
      <p>내용2</p>
      <p>내용3</p>
    </div>
  </body>

append()/appendTo()/prepend()/prependTo()메소드

  append()메소드와 appendTo()메소드는 선택한 요소 내의 마지막 위치에 새 요소를 생성하고 추가한다.

  prepend() 메소드와 prependTo()메소드는 선택한 요소 내의 앞 위치에 새 요소를 생성하고 추가한다.

  

  각 메소드의 기본형은 다음과 같다.

1. $(요소 선택).appenc(새 요소);
   $(새 요소).appendTo(요소 선택);

2. $(요소 선택).prepend(새 요소);
   $(새 요소).prependTo(요소 선택);

  1은 선택한 요소 내의 마지막 위치에 새 요소를 생성하고 추가한다.

  2는 선택한 요소 내의 앞 위치에 새 요소를 생성하고 추가한다.

 

  다음은 appendTo()메소드와 prepend()메소드를 어떻게 사용하는지 보여주는 예제이다.

<script>
  $(function(){
    $("<li>appendTo</li>").appendTo("#listZone");
    //선택한 요소의 맨 뒤에 새 요소를 생성
    $("#listZone").prepend("<li>prepend</li>");
    //선택한 요소의 맨 앞에 새 요소를 생성
  });
</script>
  </head>
  <body>
    <ul id="listZone">
      <li>리스트</li>
    </ul>
  </body>

clone()/empty()/remove() 메소드

  clone()메소드는 선택한 요소를 복제한다.

  empty()메소드는 선택한 요소의 모든 하위 요소를 삭제하고, remove()메소드는 선택한 요소를 삭제한다.

  각 메소드의 기본형은 다음과 같다.

1. $("요소 선택").clone([true | false]);
2. $("요소 선택").empty();
3. $("요소 선택").remove();

  1은 선택한 요소를 복제한다. true면 이벤트까지 복제하고, false면 요소만 복제한다. 기본값은 false이다.

  2는 선택한 요소의 모든 하위 요소를 삭제한다.

  3은 선택한 요소를 삭제하낟.

 

  다음은 clone(), empty() 함수, remove()메소드를 이용한 예제이다.

<script>
  $(function(){
    var copyObj=$(".box1").children().clone();
    //class 값이 "box1"인 요소의 모든 자식 요소를 복제.
    //그 다음 copyObj에 참조시킨다.

    $(".box3").empty();
    //class값이 "box3"인 요소의 모든 하위 요소를 삭제.
    $(".box3").append(copyObj);
    //copyObj에 저장된 요소를 class값이 "box3"인 요소
    //맨 뒤에 추가.
  });
</script>
</head>
<body>
  <div class="box1">
    <p>내용1</p>
    <p>내용2</p>
  </div>
  <div class="box2">
    <p>내용3</p>
    <p>내용4</p>
  </div>
  <div class="box3">
    <p>내용5</p>
    <p>내용6</p>
  </div>
</body>

 

replaceAll()/replaceWith()메소드

  replaceAll()메소드와 replaceWith()메소드는 선택한 요소를 새 요소로 바꿀 때 사용한다.

  주로 선택한 모든 요소를 한꺼번에 바꿀 때 사용하며 각 메소드의 기본형은 다음과 같다.

$("새 요소").replaceAll("요소 선택");
$("요소 선택").replaceWith("새 요소");

  다음은 <h2>태그에 replaceWith()함수를 지정하고, 모든 <div>태그에는 replaceAll()메소드를 지정하는 예제이다

<script>
  $(function(){
    $("h2").replaceWith("<h3>replace method</h3>");
    $("<p>Change</p>").replaceAll("div");
    //모든 <h2>요소와 <div> 요소를 새 요소로 바꾼다.
  });
</script>
</head>
<body>
  <section class="box1">
    <h2>제목1</h2>
    <div>내용1</div>
    <div>내용2</div>
  </section>
  <section class="box2">
    <h2>제목2</h2>
    <div>내용3</div>
    <div>내용4</div>
  </section>
</body>

unwrap()/wrap()/wrapAll()/wrapInner()메소드

  unwrap()메소드는 선택한 요소의 부모 요소를 삭제한다. wrap()메소드는 선택한 요소를 각각 새 요소로 감싸고,

  wrapAll()메소드는 선택한 요소를 한꺼번에 새 요소로 감싼다. wrapInner()메소드는 선택한 요소의 모든 하위 요소를

  새 요소로 감싼다.

  각 메소드의 기본형은 다음과 같다.

1. $("요소 선택").unwrap();
2. $("요소 선택").wrap(새 요소);
3. $("요소 선택").wrapAll(새 요소);
4. $("요소 선택").wrapInner(새 요소);

  1은 선택한 요소의 부모 요소를 삭제한다.

  2는 선택한 요소를 새 요소로 각각 감싼다.

  3은 선택한 요소를 새 요소로 한꺼번에 감싼다.

  4는 선택한 요소의 모든 하위 요소를 새 요소로 감싼다.

 

  다음 예제는 위의 메소드들의 사용 예제이다.

<script>
  $(function(){
    $("strong").unwrap(); //<strong> 요소를 감싸는 부모요소를 제거
    $(".ct1").wrap("<div/>"); //class값이 "ct1"인 요소를 <div>요소로 감싼다.
    $(".ct2").wrapAll("<div/>"); //class값이 "ct2"인 요소를 <div> 요소로 감싼다.
    $("li").wrapInner("<h3/>"); //<li>요소의 모든 하위 요소를 <h3>요소로 감싼다.
  });
</script>
<style>
  div{background-color:aqua;}
</style>
</head>
<body>
  <h1 id="tit_1">
    <strong>객체 조작 및 생성</strong>
  </h1>
  <p class="ct1">내용1</p>
  <p class="ct1">내용2</p>
  <p class="ct2">내용3</p>
  <p class="ct2">내용4</p>
  <ul>
    <li>내용3</li>
    <li>내용4</li>
  </ul>
</body>

 

주요 선택자 정리하기

  자주 사용하는 선택자만 정리한 예제이다.

<script>
  $(function(){
    $(".wrap_1 p:first")
    .text("내용1");
    //<div class="wrap1">
    //  <p>내용1</p>

    $(".wrap_1 p.active")
    .removeClass("active")
    .addClass("on");
    //<p class="on">내용2</p>

    $(".wrap_1 p:eq(2)a")
    .attr("href","http://www.naver.com");
    //<p><a href="#">네이버</a></p>

    $(".wrap_1 p:eq(3) input").val("Korea");
    //<input type="text" value="Korea">

    $(".wrap_2 p:first").after("<p>After(추가1)</p>");
    $(".wrap_2 p:first").before("<p>Before(추가2)</p>");
    //<div class="wrap_2">
    //  <p>Before(추가2)</p>
    //  <p>내용5</p>
    //  <p>After(추가1)</p>

    $(".wrap_3 p")
    .unwrap()
    .wrapInner("<strong/>");
    //<div class="wrap_3">
    //  <p><strong>내용7</strong></p>
    //  <p><strong>내용8</strong></p>
    //</div>
  });
</script>
</head>
<body>
  <div class="wrap_1">
    <p>텍스트1</p>
    <p class="active">내용2</p>
    <p><a href="#">네이버</a></p>
    <p>
      <input type="text" value="Hello">
    </p>
  </div>
  <div class="wrap_2">
    <p>내용5</p>
    <p>내용6</p>
  </div>
  <div class="wrap_3">
    <div>
      <p>내용7</p>
      <p>내용8</p>
    </div>
  </div>
</body>

 

(참고 : do it 자바스크립트+제이쿼리 입문)

'Front > JQuery' 카테고리의 다른 글

JQuery(이벤트 객체)  (0) 2020.05.22
JQuery(이벤트 등록 메소드)  (0) 2020.05.22
JQuery(속성 탐색 선택자)  (0) 2020.05.20
JQuery(위치탐색선택자)  (0) 2020.05.20
jquery(선택자)  (0) 2020.05.20

속성 탐색 선택자

  선택한 요소를 기준으로 일치하는 속성의 포함 여부를 따져 요소를 선택하는 선택자이다.

  예를 들어 선택한 이미지 요소 중 경로가 [images/logo.gif]와 일치하는 이미지 요소만 선택하고자 할 때 사용한다.

 

  다음은 속성 탐색 선택자의 종류와 사용법에 대해 간단히 정리한 표이다.

종류 사용법 설명
$(“요소 선택[속성]”) $(“li[title]”) <li>요소 중 title 속성이 포함된 요소만 선택
$(“요소 선택[속성=]”) $(“li[title=’리스트’]”) <li> 요소 중 title 속성값이 리스트인 요소만 선택
$(“요소 선택[속성^=텍스트]”) $(“a[href^=’http://’]”) <li> 요소 중 href 속성값이 ‘http://’로 시작하는 요소만 선택
$(“요소 선택[속성$=텍스트]”) $(“a[href$=’.com’]”) <li> 요소 중 href 속성값이 ‘.com’으로 끝나는 요소만 선택
$(“요소 선택[href*=텍스트]”) $(“a[href*=’easyspub’]”) <li> 요소 중 href 속성값 중에서 ‘easyspub’을 포함하는 요소만 선택
$(“요소 선택:hidden”) $(“li:hidden”) <li> 요소 중 숨겨져 있는 요소만 선택
$(“요소 선택:visible”) $(“li:visible”) <li>요소 중 보이는 요소만 선택
$(“.text”) $(“.text”) <input>요소 중 type 속성 값이 “text”인 요소만 선택
$(“.selected”) $(“.selected”) selected 속성이 적용된 요소만 선택
$(“.checked”) $(“.checked”) checked 속성이 적용된 요소만 선택

 

속성과 값에 따른 탐색 선택자

  선택한 요소 중 지정한 속성과 일치하는 속성이 있는지, 없는지의 포함 여부를 따져 요소를 선택한다.

  즉, 이 선택자는 포함하는 요소를 선택할 때 주로 사용한다.

 

  기본형은 각각 다음과 같다.

1. $("요소 선택[속성]")
2. $("요소 선택[속성^=값]")
3. $("요소 선택[속성$=값]")
4. $("요소 선택[속성*=값]")
5. $(":type 속성값")

  1은 선택한 요소 중 지정한 속성이 포함된 요소만 선택한다.

  2는 선택한 요소 중 속성값이 명시한 값으로 시작하는 요소만 선택한다.

  3은 선택한 요소 중 속성값이 명시한 값으로 끝나는 요소만 선택한다.

  4는 선택한 요소 중 속성값이 명시한 값을 포함하는 요소만 선택한다.

  5는 input 요소 중 type 속성값이 일치하는 요소만 선택한다.

 

  다음은 속성과 값에 따른 탐색 선택자를 사용한 예제이다.

<script>
  $(function(){
    $("#wrap a[target]")  //target 속성을 포함하는 요소만 선택
    .css({"color":"#f00"});

    $("#wrap a[href^=https]") //href 속성값이 "https"로 시작하는 요소만 선택
    .css({"color":"#0f0"});

    $("#wrap a[href$=net]") //href 속성값이 "net"으로 끝나는 요소만 선택
    .css({"color":"#00f"});

    $("#wrap a[href*=google]")  //href 속성값에 "google"이 포함된 요소만 선택
    .css({"color":"#000"});

    $("#member_f:text") //input요소 중 type속성값이 "text"인 요소만 선택
    .css({"background-color":"#ff0"});

    $("#member_f:password") //input요소 중 type속성값이 "password"인 요소만 선택
    .css({"background-color":"#0ff"});
  });
</script>
</head>
<body>
  <div id="wrap">
    <p>
      <a href="https://easyspub.co.kr" target="_blank">EasysPub</a>
    </p>
    <p>
      <a href="https://naver.com" target="_blank">Naver</a>
    </p>
    <p>
      <a href="https://google.co.kr" target="_blank">Google</a>
    </p>
    <p>
      <a href="https://daum.net" target="_blank">Daum</a>
    </p>
  </div>
  <form action="#" method="get" id="member_f">
    <p>
      <label for="user_id">아이디</label><input type="text" name="user_id" id="user_id">
    </p>
    <p>
      <label for="user_pw">비밀번호</label><input type="password" name="user_pw" id="user_pw">
    </p>
  </form>
</body>

속성 상태에 따른 탐색 선택자

  선택한 요소 중 속성 상태에 따라 요소를 선택한다.

  기본형은 다음과 같다.

1. $("요소 선택:[visible|hidden]")
2. $(":selected")
3. $(":checked")

  1은 선택한 요소 중 숨겨진 상태 또는 보이는 상태의 요소만 선택한다.

  2는 선택 상자 중 현재 선태된 옵션 요소만 선택한다.

  3은 체크박스 또는 라디오 버튼 요소 중 체크된 요소만 체크한다.

 

  다음은 속성 상태에 따른 탐색 선택자를 사용한 예제이다.

 

<script>
  $(function(){
    $("#wrap p:hidden").css({ //선택한 <p>요소 중 숨겨진 상태의 요소만 선택
      "display":"block",
      "background":"#ff0"
    });

    var z1=$("#zone1 :selected").val();//id값이 'zone1'인 요소의 하위 <select>요소 중 selected된 <option>요소만 선택한다.
    console.log(z1);

    var z2=$("#zone2 :checked").val(); //id값이 'zone2'인 요소의 하위 <input>요소 중 checked된 <input>요소만 선택한다.
    console.log(z2);

    var z3=$("#zone3 :checked").val();
  });
</script>
</head>
<body>
  <div id="wrap">
    <p>내용1</p>
    <p sytle="display:none">내용2</p>
    <p>내용3</p>
  </div>
  <form action="#">
    <p id="zone1">
      <select name="course" id="course">
        <option value="opt1">옵션1</option>
        <option value="opt2" selected>옵션2</option>
        <option value="opt3">옵션3</option>
      </select>
    </p>
    <p id="zone2">
      <input type="checkbox" name="hobby1" value="독서">독서
      <input type="checkbox" name="hobby2" value="자전거">자전거
      <input type="checkbox" name="hobby3" value="등산" checked>등산
    </p>
    <p id="zone3">
      <input type="radio" name="gender" value="male">남성
      <input type="radio" name="gender" value="female" checked>여성
    </p>
  </form>
</body>

그 외의 선택자 - 컨텐츠 탐색 선택자

  요소 또는 속성의 포함 여부에 따라 특정 요소를 선택하는 선택자 이다.

  다음은 컨텐츠 탐색 선택자의 종류와 사용법을 정리한 표이다.

종류 사용법 설명
$(“요소 선택:contains(텍스트)”) $(“li:contatins(‘내용2’)”) <li> 요소 중 내용2’라는 텍스트를 포함하는 요소만 선택한다
$(“요소 선택”).contents() $(“p”).contents() 선택한 요소의 하위 요소 중 가장 가까운 하위 요소를 선택한다.
$(“요소 선택:has(요소명)”)
$(“요소 선택”.has(:요소명)
$(“li:has(‘span’)”)
$(“li”).has(‘span’)
<li> 요소 중 <span>을 포함하는 요소만 선택한다.
$(“요소 선택:not(:제외요소)”)
$(“요소 선택”.not(:제외요소)
$(“li:not(:first)”)
$(“li”)
<li> 요소 중 첫번째 요소만 제외하고 선택한다.
$(요소 선택).filter(필터 요소) $(“li”).filter(“.list2”) <li> 요소 중 class 값이 “list2”인 요소만 선택한다.
$(요소 선택1).find(요소 선택2) $(“li”).find(“strong”) <li> 요소의 하위 요소인 <strong>만 선택한다
$(“요소 선택1”).closest(“요소 선택2”) $(“strong”).closest(“div”) <strong>을 감싸는 상위<div>요소 중 가장 가까운 상위 요소를 선택한다.
end() $(“li”).children(“a”).end() 필터링이 실행되기 이전의 요소인 <li>가 선택된다.

contains()/contents()/has()/not()/end() 탐색 선택자

  contains() 는 선택한 요소 중 지정한 텍스트를 포함하는 요소만 선태가혹, contents()는 선택한 요소의 하위 요소 중 1

  깊이의 텍스트와 태그 노드를 선택한다. has()는 선택한 요소 중 지정한 태그를 포함하는 요소만 선택한다.

  not()은 선택한 요소 중 지정한 요소만 제외한 채 선택하고, end()는 필터링되기 이전의 선택자가 적용 되도록 한다.

1. $("요소 선택:contains(텍스트)")
2. $("요소 선택").contents()
3. $("요소 선택:has(요소명)") / $("요소 선택").not(제외할 요소 선택)
4. $("요소 선택:not(제외할 요소 선택)") / $("요소 선택").not(제외할 요소 선택)
5. $("요소 선택").탐색 선택자().end()

  다음은 선택한 요소에 지정한 텍스트 또는 태그를 포함하는지의 여부에 따라 선택을 결정하는 예제이다.

<script>
  $(function(){
    $("#inner_1 p:contatins(내용1)") //선택한 <p> 요소 중 "내용1"을 포함하는 요소만 선택
    .css({"background-color":"#ff0"});

    $("#inner_1 p:has(strong)") //선택한 <p>요소 중 <strong>요소를 포함하는 요소만 선택.
    .css({"background-color":"#0ff"});

    $("#outer_wrap").contents() //id값이 "outer_wrap"인 요소의 하위 요소의 텍스트와 태그 노드 선택
    .css({"border":"1px dashed #00f"});

    $("#inner_2 p").not(":first") //id값이 "inner_2"인 요소의 하위<p>요소에서 첫번째 요소만 제외하고 선택
    .css({"background-color":"#0f0"});

    $("#inner_2 p").eq(2).end() //id값이 "inner_2"인 요소의 하위 <p> 요소에서 인덱스가 2인 요소를 선택합니다. 그러나 다시 end()메소드를 적용하기 때문에 인덱스를 선택하기 전의 선택자가 적용된다.
    .css({"color":"#f00"});
  });
</script>
</head>
<body>
  <div id="outer_wrap">
    <h1>컨텐츠 탐색 선택자</h1>
    <section id="inner_1">
      <h1>contatins(), contents(), has()</h1>
      <p>
        <span>내용1</span>
      </p>
      <p>
        <strong>내용2</strong>
      </p>
      <p>
        <span>내용3</span>
      </p>
    </section>
    <section id="inner_2">
      <h1>not(), end()</h1>
      <p>내용4</p>
      <p>내용5</p>
      <p>내용6</p>
    </section>
  </div>
</body>

find()/filter()탐색 선택자

  find() 탐색 선택자는 선택한 하위 요소 중에서 find()로 필터링한 요소만 선택한다.

  filter() 탐색 선택자는 선택한 요소 중에서 filter()로 필터링한 요소만 선택한다.

  즉, 둘의 차이점은 필터링 대상이 선택 요소를 기준으로 '하위요소'인지, '선택한요소'인지로 구분한다는 것이다.

1. $("요소 선택").find("하위 요소 중 필터링할 요소 선택")
2. $("요소 선택").filter("선택한 요소 중 필터링할 요소 선택")

  다음은 find()와 filter() 탐색 선택자를 사용한 예제이다.

<script>
  $(function(){
    $("#inner_1").find(".txt1")//id값이 "inner_1"인 요소의 하위 요소중 class 값이 ".txt1"인 요소를 선택
    .css({"background-color":"#ff0"});

    $("#inner_1 p").filter(".txt2")//id값이 "inner_1"인 요소의 하위 요소 중 class 값이 '.txt2'인 요소를 선택
    .css({"background-color":"#0ff"});

    $("#inner_2 p").filter(function(idx, obj){
      console.log(idx);
      return idx % 2 == 0;
    })
    .css({"background-color":"#0f0"});
  });
</script>
</head>
<body>
  <div id="outer_wrap">
    <h1>컨텐츠 탐색 선택자</h1>
    <section id="inner_1">
      <h2>find(), filter()</h2>
      <p class="txt1">내용1</p>
      <p class="txt2">내용2</p>
    </section>

    <section id="inner_2">
      <h2>filter(function)</h2>
      <p>index 0</p>
      <p>index 1</p>
      <p>index 2</p>
      <p>index 3</p>
    </section>
  </div>
</body>

 

선택자와 함께 알아두면 유용한 메소드

  다음은 메소드의 종류와 사용법을 정리한 표이다.

종류 사용법 설명
is(“요소 상태”) $(“.txt1”).is(“.visible”) 선택한 요소가 보이면 true를 반환
$.noConflict() var 변수 = $.noConflict();
변수(“요소 선택”)
$.noConflict()함수를 이용하면 현재 제이쿼리에서 사용중인 $ 메소드 사용을 중단하고 새로 지정한 변수명 메소드를 사용한다.
get() $(“요소 선택”).get(0).
style.color=”#f00”
선택자에 get(0)을 적용하면 자바스크립트 DOM 방식의 스타일을 사용할 수 있다.

 is()메소드

  선택한 요소의 상태가 지정한 속성과 일치하면 true를 반환하고, 그렇지 않으면 false를 반환한다.

  is() 메소드는 입력 요소의 체크박스나 선택 상자의 '선택여부'또는 '보이는지의 여부'를 알아볼 때 주로 사용한다.

$("요소 선택").is(":[checked | selected | visible | hidden | animated]")

  checked 는 선택한 체크박스 또는 라이도 버튼 요소가 체크된 상태면 true를 아니면 false를 반환한다.

  selected는 선택한 선택상자에 옵션 요소가 선택된 상태면 true를 아니면 false를 반환한다.

  visible은 선택한 요소가 보이면 true를 아니면 false를 반환한다.

  hidden은 선택한 요소가 숨겨진 상태면 true를 아니면 false를 반환한다.

  animated는 선택한 요소가 애니메이션동작 상태면 true를 아니면 false를 반환한다.

 

  다음은 is()메소드를 사용한 예제이다.

<script>
  $(function(){
    var result_1 = $("#inner_1 p")
    .eq(0).is(":visible");
    console.log(result_1); //true

    var result_2 = $("#inner_1 p")
    .eq(1).is(":visible");
    console.log(result_2); //false

    var result_3=$("#chk1").is(":checked");
    console.log(result_3); //true
    
    var result_4=$("#chk2").is(":checked");
    console.log(result_4); //false
  });
</script>
</head>
<body>
  <div id="outer_wrap">
    <h1>is()</h1>
    <section id="inner_1">
      <h2>문단 태그 영역</h2>
      <p>내용1</p>
      <p style="display:none;">내용2</p>
    </section>

    <section id="inner_2">
      <h2>폼 태그 영역</h2>
      <p>
        <input type="checkbox" name="chk1" id="chk1" checked>
        <label for="chk1">체크1</label>
        <input type="checkbox" name="chk2" id="chk2">
        <label for ="chk2">체크2</label>
      </p>
    </section>
  </div>

 

(참고 : do it 자바스크립트+제이쿼리 입문)

'Front > JQuery' 카테고리의 다른 글

JQuery(이벤트 등록 메소드)  (0) 2020.05.22
JQuery(객체조작)  (0) 2020.05.20
JQuery(위치탐색선택자)  (0) 2020.05.20
jquery(선택자)  (0) 2020.05.20
jquery(연동)  (0) 2020.05.20

배열관련 메소드

  배열관련 메소드의 종류

종류

사용법

설명

each()/$each()

$(“요소 선택”).each(function)

$each($(“요소 선택”).function)

배열에 저장된 문서 객체만큼 메소드가 반복 실행.

배열에 저장된 객체의 인덱스 순서대로 하나씩 접근하여 객체를 선택하고 인덱스를 구한다.

$.map()

$.map(Array, function)

배열에 저장된 데이터 수만큼 메소드가 반복 실행.

함수에서 반환된 데이터는 새 배열에 순서대로 저장. 새로 저장된 배열 객체를 반환.

$.grep()

$.grep(Array, function)

배열에 저장된 데이터 수만큼 메소드가 반복 실행.

반환값이 true인 경우에만 배열의 데이터가 인덱스 오름차순으로 새 배열에 저장되며 그 배열을 반환.

$.inArray()

$.inArray(data, Array, start index)

배열안에서 데이터를 찾는다. 데이터를 찾으면 가장 맨 앞 데이터의 인덱스를 반환하고, 찾지 못하면 -1을 반환.

start index의 값을 지정하면 해당 위치부터 데이터를 찾는다.

$.isArray()

$.isArray(object)

입력한 객체가 배열 객체라면 true를 아니면 false를 반환

$.merge()

$.merge(Array 1, Array 2)

인자값으로 입력한 2개의 배열 객체를 하나로 그룹화

inde()

$(“요소 선택”).index(“지정 요소 선택”)

선택자로 요소를 먼저 선택.

그런 다음 지정한 요소의 인덱스 정보를 가져온다.

 each()/$.each()메소드

  선택자로 선택한 요소(문서 객체)는 배열에 순서대로 저장된다.

  이때 each()와 $.each()메소드는 배열에 저장된 요소를 순서대로 하나씩 선택하면서 인덱스 정보를 가져온다.

1. $("요소 선택").each(function(매개변수 1, 매개변수 2){ })
2. $.each($("요소 선택"), function(매개변수1, 매개변수2){ })
3. $("요소 선택").each(function(){$(this)})
4. $.each($("요소 선택"),function(){$(this)})

  1,2는 배열에 저장된 요소의 개수만큼 메소드를 반복 실행한다. 메소드를 실행할 때마다 매개변수 1, 매개변수2에는

  배열에 저장된 요소와 인덱스의 값이 배열에 오름차순으로 대입된다.

  3,4는 배열에 저장된 요소의 개수만큼 메소드를 반복 실행한다. 메소드를 실행할 때마다 $(this)에는 배열에 저장된

  요소가 오름차순으로 대입된다.

 

  다음 예제는 배열에 저장된 요소를 each(), $.each()메소드를 사용해 순서대로 선택한다.

  그 다음 인덱스 정보를 콘솔 패널에 출력한다.

<script>
  $(function(){
    var obj = [{
      "area":"서울"
    },{
      "area":"부산"
    },{
      "area":"전주"
    }]

    $(obj).each(function(i,o){
      //obj 배열의 데이터 개수만큼 함수가 실행.
      //메소드가 반복 실행될 때마다 배열에 저장된 객체에
      //오름차순으로 접근하고 매개변수 i와 o에는 배열의 인덱스 값과
      //객체가 대입된다.
      console.log(i+":", o);
    });
    console.log("=====The End======");

    $.each($("#menu2 li"), function(i,o){
      //선택한 요소만큼(li) 메소드를 반복 실행.
      //배열에 저장된 요소는 인덱스 오름차순으로 $(this)에 반환된다.
      console.log(i+":",o);
    });
    console.log("=====The End2======");

    $.each($("#menu2 li"),function(i){
      console.log(i+":", $(this));
    });
  });
</script>
</head>
<body>
  <h1>탐색 선택자</h1>
   <ul id="menu 1">
    <li>내용1-1</li>
    <li>내용1-2</li>
    <li>내용1-3</li>
   </ul>
   <ul id="menu 2">
    <li>내용2-1</li>
    <li>내용2-2</li>
    <li>내용2-3</li>
   </ul>
</body>

$.map()/$.grep() 메소드

  $.map() 메소드는 배열에 저장된 데이터 수만큼 메소드를 반복 실행한다.

  그리고 메소드에서 반환된 데이터는 새 배열에 저장되고 그 배열 객체를 반환한다.

  $.grep() 메소드는 배열에 저장된 데이터 수만큼 메소드를 반복 실행하며 인덱스 오름차순으로 배열의 데이터를

  불러온다. 메소드의 반환값이 true면 데이터가 새 배열에 저장되고 배열을 반환한다.

1. $.map()메소드
$.map(Array, function(매개변수1, 매개변수2){
    return 데이터;
});

2. $.grep()메소드
$.grep(Array, function(매개변수1, 매개변수2){
    return [true|false];
});

  1은 배열에 저장된 요소만큼 메소드를 반복 실행한다.

  메소드가 실행될 때마다 매개변수 1, 매개변수2에는 배열의 데이터와 인덱스 값이 인덱스 오름차순으로 대입된다.

  반환된 데이터는 새 배열에 저장되고 새롭게 가공된 배열 객체를 반환한다.

  2는 배열에 저장된 요소만큼 메소드를 반복실행한다. 메소드가 실행될 때마다 매개변수 1, 매개변수2에는 배열에

  데이터와 인덱스 정보가 인덱스 오름차순으로 대입된다. 반환된 데이터가 true면 인덱스 오름차순으로 데이터를

  새 배열에 저장하고 새롭게 가공된 배열 객체를 반환한다.

 

  다음 예제는 $.map(), $.grep() 메소드를 사용해 배열에 저장된 객체 중 "area"의 속성값이 "서울"인 객체만 선택해

  새 배열로 가공한다. 그 다음 변수에 참조시키고 새롭게 가공된 두 배열의 객체를 콘솔 패널에 출력한다.

<script>
  $(function(){
    var arr1 = [{
      "area":"서울"
      "name":"무대리"
    },{
      "area":"부산"
      "name":"홍과장"
    },{
      "area":"대전"
      "name":"박사장"
    },{
      "area":"서울"
      "name":"빅마마"
    }]

    var arr2 = $.map(arr1, function(a,b){
      if(a.area == "서울"){
        return a;
      }
    });
    //배열에 저장된 객체 수만큼 메소드를 반복 실행.
    //메소드가 반복 실행될 때마다 배열에 저장된 객체에
    //인덱스 오름차순으로 접근한다.
    //매개변수 a,b에는 배열의 객체와 인덱스 값이 대입된다.
    //객체의 "area"속성이 "서울"이면 새 배열에 객체(매개변수a)를 저장하고
    //새롭게 가공된 배열 객체를 반환한다.
    console.log(arr2);
    console.log("======first End=====");

    var arr3 = $.grep(arr1, function(a,b){
      if(a.area == "서울"){
        return true;
      }else{
        return false;
      }
      //배열의 데이터 수만큼 메소드가 실행된다.
      //객체의 속성값이 '서울'이면 true를 반환한다.
    });
    console.log(arr3);
    console.log("=====Second End=====");
  });
</script>

$.inArray()/$.isArray()/$.merge()메소드

  $.inArray() 메소드는 배열에 저장된 데이터 중 지정한 데이터를 찾아 인덱스 값을 반환한다.

  $.isArray() 메소드는 지정한 데이터가 배열 객체면 true를 아니면 false를 반환한다.

  $.merge() 메소드는 두 배열 객체를 하나의 객체로 묶는다.

1. $.inArray(data, Array, start index)
2. $.isArray(object)
3. $.merge(Array1, Array2)

  1은 배열에 저장된 데이터 중 지정한 데이터를 인덱스 오름차순으로 찾아 먼저 찾은 데이터의 인덱스 값을 반환한다.

  2는 지정한 객체가 배열 객체면 true를 아니면 false를 반환한다.

  3은 두 배열 객체를 하나의 배열 객체로 묶는다.

 

  다음 예제에서는 $.inArray(), $.isArray()메소드를 사용해 배열 객체의 정보를 구하고 $.merge()메소드로는

  두 배열 객체를 하나의 배열 객체로 묶는다.

<script>
  $(function(){
    var arr1 = ["서울", "대전", "부산", "전주"];
    var arr2 = ["한국", "미국", "일본", "중국"];
    var obj = {
      "name":"정부장",
      "area":"서울"
    }

    var idxNum = $.inArray("부산", arr1);
    console.log(idxNum);

    var okArray1=$.isArray(arr1);
    var okArray2=$.isArray(obj);
    console.log(okArray1);//배열객체면 true
    console.log(okArray2);//배열객체가 아니면 false

    $.merge(arr2, arr1);
    console.log(arr2);//["한국", "미국", "일본", "중국", "서울", "대전", "부산", "전주"]
  });
</script>

index()메소드

  $.index()메소드는 지정 선택 요소를 찾아서 인덱스 값을 반환한다.

  다음은 index()메소드의 기본형이다.

$("요소 선택").index("지정 선택 요소");

  다음은 index()메소드를 사용한 예제이다.

<script>
  $(function(){
    var idxNum=$("li").index($("#list3"));
    console.log(idxNum); //2
  });
</script>
</head>
<body>
  <h1>배열 관련 함수</h1>

   <ul>
    <li>내용1</li>
    <li>내용2</li>
    <li id="list3">내용3</li>
    <li>내용4</li>
   </ul>
</body>

 

(참고 : do it 자바스크립트+제이쿼리 입문)

탐색 선택자

  탐색 선택자를 사용하면 기본 선택자로 선택한 요소 중 원하는 요소를 한번 더 탐색해서 좀 더 정확하게

  선택할 수 있다.

  대표적인 탐색 선택자에는 배열의 인덱스(index)를 사용해 선택하는 '위치 탐색 선택자'와

  배열에 담겨진 요소 중 지정된 속성과 값으로 선택하는 '속성 탐색 선택자'가 있다.

 

위치 탐색 선택자

  기본 선택자로 선택한 요소는 배열에 담긴다. 이때 배열의 인덱스를 사용하면 특정 요소를 좀 더

  정확하게 선택할 수 있다.

  다음은 위치 탐색 선택자의 종류를 간단하게 정리한 표이다.

종류 사용법 설명
$(“요소 선택:first”)
$(“요소 선택”).first()
$(“li:first”)
$(“li”).first()
전체<li>요소 중 첫번째 요소만 선택
$(“요소 선택:last”)
$(“요소 선택).last()
$(“li:last”)
$(“li”).last()
전체 <li>요소 중 마지막 요소만 선택
$(“요소 선택:odd”) $(“li:odd”) <li> 요소 무리 중 짝수 번째(홀수 인덱스)요소만 선택
$(“요소 선택:even”) $(“li:even”) <li> 요소 무리 중 홀수 번째(짝수 인덱스)요소만 선택
$(“요소 선택:first-of-type”) $(“li:first-of-type”) <li> 요소 무리 중 첫번째 요소만 선택
$(“요소 선택:last-of-type”) $(“li:last-of-type”) <li> 요소 무리 중 마지막 요소만 선택
$(“요소 선택:nth-child(숫자)”) $(“li:nth-child(3)”) <li> 요소 무리 중 세 번째 요소만 선택
$(“요소 선택:nth-child(숫자n)”) $(“li:nth-chile(3n)”) <li> 요소 무리 중 3의 배수 번째에 있는 요소만 선택
$(“요소 선택:nth-last-of-type
(숫자)”)
$(“li:nth-last-of-type(2)”) <li> 요소 무리 중 마지막 위치로부터 두번째에 있는 요소만 선택
$(“요소 선택:only-child”) $(“li:ony-child”) 부모 요소 내에 <li> 요소가 1개뿐인 <li> 요소만 선택
$(“요소 선택:eq(index)”)
$(“요소 선택”).eq(index)
$(“li:eq(2)”)
$(“li”).eq(2)
<li> 요소 중 인덱스 2가 참조하는 요소를 불러온다
$(“요소 선택:gt(index)”) $(“li:gt(1)”) <li> 요소 중 인덱스 1보다 큰 인덱스가 참조하는 요소를 불러온다
$(“요소 선택:lt(index)”) $(“li:lt(1)”) <li> 요소 중 인덱스 1보다 작은 인덱스가 참조하는 요소를 불러온다
$(“요소 선택”).slice(index) $(“li”).slice(2) <li> 요소 중 인덱스 2부터 참조하는 요소를 불러온다

 

first/last 선택자

  first 선택자는 선택된 요소 중 첫번째 요소만 선택한다. 이와 반대로 last 선택자는 선택된 요소 중 마지막 요소만 선택

  한다.

$("요소 선택:first")또는 $("요소 선택").first()

$("요소 선택:last") 또는 $("요소 선택").last()

  다음은 문단 태그 영역에 first 선택자와 last선택자를 적용한 예제이다.

<script>
      $(function(){
       $("#menu li:first")	//index 0
       .css({"background-color":"#ff0"});

       $("#menu li:last")	//index 3
       .css({"background-color":"#0ff"});
       });
</script>
</head>
<body>
    <h1>탐색 선택자</h1>
    <ul id="menu">
      <li>내용1</li>
      <li>내용2</li>
      <li>내용3</li>
      <li>내용4</li>
    </ul>
</body>

even/odd 선택자

  even 선택자는 선택한 요소 중 홀수 번째(짝수 인덱스)요소만 선택하고, 이와 반대로 odd 선택자는

  짝수번째(홀수 인덱스)요소만 선택한다.

  다음은 even선택자와 odd선택자의 기본형이다.

$("요소 선택:even")

$("요소 선택:odd")
<script>
  $(function(){
    $("#menu li:even")	//index 0, 2
    .css({"background-color":"#ff0"});

    $("#menu li:odd")	//index 1, 3
    .css({"background-color":"#0ff"});
  });
</script>
</head>
<body>
  <h1>탐색 선택자</h1>
   <ul id="menu">
    <li>내용1</li>
    <li>내용2</li>
    <li>내용3</li>
    <li>내용4</li>
   </ul>
</body>

 

eq(index)/lt(index)/gt(index) 탐색 선택자

  eq(index)탐색 선택자는 선택한 요소 중 지정한 인덱스가 참조하는 요소만 선택하고 lt(index) 선택자는 선택한

  요소 중 지정한 인덱스보다 작은(lt, Less Than) 인덱스를 참조하는 요소만 선택한다.

  이와 반대로 gt(index)는 선택한 요소 중 지정한 인덱스보다 큰(gt, Greater Than)인덱스를 참조하는 요소만 선택한다.

  다음은 eq, lt, gt선택자의 기본형이다.

1. $("요소 선택:eq(index)") 또는 $("요소 선택").eq(index)
2. $("요소 선택:lt(index)")
3. $("요소 선택:gt(index)")

  다음은 eq(), lt(), gt()의 선택자를 적용한 예제이다.

<script>
  $(function(){
    $("#menu li").eq(2) //index 2
    .css({"background-color":"#ff0"});

    $("#menu li:lt(2)") //index 0, 1
    .css({"background-color":"#0ff"});

    $("#menu li:gt(2)") //index 3, 4
    .css({"background-color":"#f0f"});
  });
</script>
</head>
<body>
  <h1>탐색 선택자</h1>
   <ul id="menu">
    <li>내용1</li>
    <li>내용2</li>
    <li>내용3</li>
    <li>내용4</li>
    <li>내용5</li>
   </ul>
</body>

 

first-of-type/last-of-type 선택자

  first-of-type 선택자는 선택한 요소의 무리 중 첫번째 요소만 선택한다.

  이와 반대로 last-of-type은 선택한 요소의 무리 중 마지막에 위치한 요소만 선택한다.

1. $("요소 선택:first-of-type")
2. $("요소 선택:last-of-type")

 

<script>
  $(function(){
    $("li:first-of-type") //<li> 1-1, 2-1
    .css({"background-color":"#ff0"});

    $("li:last-of-type") //<li> 1-3, 2-3
    .css({"background-color":"#0ff"});
  });
</script>
</head>
<body>
  <h1>탐색 선택자</h1>
   <ul>
    <li>내용1-1</li>
    <li>내용1-2</li>
    <li>내용1-3</li>
   </ul>
   <ul>
    <li>내용2-1</li>
    <li>내용2-2</li>
    <li>내용2-3</li>
   </ul>
</body>

nth-child(숫자n)/nth-last-of-type(숫자)선택자

  nth-child(숫자n)선택자는 선택한 요소의 무리 중 지정한 숫자(배수)의 요소를 선택한다.

  예를들어 li:nth-child(2)는 선택한 요소의 무리 중 두번째의 <li>태그를 가리키고, li:nth-child(2n)은

  선택한 요소의 무리 중 2의 배수의 <li>태그를 가리킨다.

  이에 비해 nth-last-of-type(숫자) 선택자는 선택한 요소의 무리 중 마지막에서 지정한 숫자의 요소를 선택한다.

1. $("요소 선택:nth-child(숫자)")
2. $("요소 선택:nth-child(숫자n)")
3. $("요소 선택:nth-last-child(숫자)")

  1. 선택한 요소 중 지정한 숫자에 위치한 요소를 선택한다.

  2. 선택한 요소 중 지정한 배수에 위치한 요소를 선택한다.

  3. 선택한 요소 중 마지막 위치에서 지정한 숫자에 위치한 요소를 선택한다.

 

  다음은 nth-child와 nth-last-child를 적용한 예제이다.

<script>
  $(function(){
    $("#menu 1 li:nth-child(1)") //<li> 1-1
    .css({"background-color":"#ff0"});

    $("#menu 1 li:nth-child(2n)") //<li> 1-2, 1-3, 1-4
    .css({"background-color":"#f00"});
    
    $("#menu 2 li:nth-last-child(2)") //<li> 2-2
    .css({"background-color":"#0ff"});
  });
</script>
</head>
<body>
  <h1>탐색 선택자</h1>
   <ul id="menu 1">
    <li>내용1-1</li>
    <li>내용1-2</li>
    <li>내용1-3</li>
   </ul>
   <ul id="menu 2">
    <li>내용2-1</li>
    <li>내용2-2</li>
    <li>내용2-3</li>
   </ul>
</body>

only-child/slice(index)선택자

  only-child 선택자는 선택한 요소가 '부모 요소에게 하나뿐인 자식요소'인 경우에 선택한다.

  slice(start index, end index) 선택자는 선택한 요소의 지정 구간 인덱스의 요소를 선택한다.

 

1. $("요소 선택:only-child")
2. $("요소 선택").slice(start index, end index)

  1. 선택한 요소가 부모 요소에게 하나뿐인 자식 요소면 선택한다.

  2. 지정 구간 인덱스의 요소를 선택한다. 예를들어 slice(1,3)은 1초과 3이하의 요소를 선택한다.

 

  다음은 only-child 선택자와 slice 선택자를 적용한 예제이다.

<script>
  $(function(){
    $("#menu 1 li").slice(1, 3)
    .css({"background-color":"#ff0"});

    $("li:only-child")
    //<ul id="menu2">
    //  <li>내용 2-1</li>
    //</ul>
    .css({"background-color":"#0ff"});
  });
</script>
</head>
<body>
  <h1>탐색 선택자</h1>
   <ul id="menu 1">
    <li>내용1-1</li>
    <li>내용1-2</li>
    <li>내용1-3</li>
    <li>내용1-4</li>
   </ul>
   <ul id="menu 2">
    <li>내용2-1</li>
   </ul>
</body>

 

(참고 : do it 자바스크립트+제이쿼리 입문)

'Front > JQuery' 카테고리의 다른 글

JQuery(이벤트 등록 메소드)  (0) 2020.05.22
JQuery(객체조작)  (0) 2020.05.20
JQuery(속성 탐색 선택자)  (0) 2020.05.20
jquery(선택자)  (0) 2020.05.20
jquery(연동)  (0) 2020.05.20

선택자

  선택자는 HTML 요소를 선택하여 가져온다.

  제이쿼리 선택자는 CSS선택자와 마찬기지로 선택한 요소의 디자인 속성을 적용할 때 사용할 수 있다.

  이때 HTML에 작성한 스타일은 사용자의 동작에 의해 스타일을 변경할 수 없기 때문에 HTML에서 작성한

  스타일(CSS)은 '정적이다'라고 표현한다.

  하지만 제이쿼리 선택자를 사용하면 '동적'으로 스타일을 적용할 수 있다.

  선택자를 좀 더 정확하고 깊이 있게 공부하려면 문서 객체 모델에 대해 알아 두는 것이 좋다.

 

문서객체 모델

  문서객체모델(DOM, Document Object Model)이란 HTML 문서 객체 구조를 말한다.

  HTML문서의 기본 객체 구존느 최상위 객체인 <html>이 있고 하위 객체로 <head>, <body>가 있다.

  <body>태그는 문단태그, 테이블태그, 폼태그 등을 포함할 수 있다.

  문서 객체 모델에서는 모든 태그를 객체라고 부르며, 태그에는 기능과 속성이 포함되어 있다.

  

  다음 HTML의 문서 객체 구조를 살펴 보자.

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8">
    <title>DOM</title>
  </head>
  <body>
    <h1>선호하는 음식</h1>
    <section id="food_1">
      <h2>한식</h2>
      <ul>
        <li>김치</li>
        <li>불고기</li>
      </ul>
    </section>
    <section id="food_2">
      <h2>양식</h2>
      <ul>
        <li>피자</li>
        <li>파스타</li>
      </ul>
    </section>
  </body>
</html>

  위 HTML의 문서 객체 구조를 그림으로 표현하면 트리구조가 된다. 이때 가장 상위에 위치하는 <html>은

  뿌리(root)라고 부르고, 뿌리로부터 가지처럼 뻗어나가는 모양의 요소를 노드(Node)라고 부른다.

  노드의 종류에는 요소노드(Element Node), 텍스트 노드(Text Node), 속성 노드(Attribute Node)가 있다.

 

선택자 사용하기

  선택자를 사용하기 위해서는 문서 객체를 불러와야 한다.

  다음은 선택자를 사용하는 방법이다.

방법1(잘못된 적용) 방법 2(정상 적용) 방법 3(정상 적용)
<head>

<script src=”js/jquery.js”></script>
<script>
  $(“#txt”).css(“color”,”red”);
</script>
</head>
<body>

  <p id=”txt”>내용</p>
</body>
<head>

<script src=”js/jquery.js”></script>
<script>
$(document).ready(function() {
$(“#txt”).css(“color”,”red);
});
</script>
</head>
<body>
<p id=”txt”>내용</p>
</body>
<head>

<script src=”js/jquery.js”></script>
<script>
$(function() {
$(“#txt”).css(“color”,”red”);
});
</script>
</head>
<body>

  <p id=”txt”>내용</p>
</body>

  다음은 제이쿼리 선택자로 스타일이나 속성을 적용하는 기본형이다.

  선택자는 $()에 문자형 데이터로 css선택자를 입력하면 된다.

1. 선택한 요소에 지정한 스타일을 적용.
$("CSS 선택자").css("스타일 속성명", "값");

2. 선택한 요소에 지정한 속성을 적용.
$("CSS 선택자").attr("속성명","값");

  다음은 제이쿼리의 아이디 선택자를 적용하여 글자 색상을 바꾸는 예제이다.

  <head>
    <meta charset="UTF-8">
    <title>선택자</title>
    <script src="js/jquery.js"></script>
    <script>
      $(function(){
        $("#title").css("color","red");
      });
    </script>
  </head>
  <body>
    <h1 id="title">제목</h1>
  </body>

기본 선택자

  <body>영역에 있는 문서 객체를 선택할 수 있는 선택자를 살펴 볼것이다.

  제이쿼리의 기본 선택자는 직접 선택자와 인접 관계 선택자로 나눌 수 있다.

구분 종류 사용법 설명
직접
선택자
전체 선택자 $(“*”) 모든 요소를 선택
아이디 선택자 $(“#아이디명”) id속성에 지정한 값을 가진 요소를 선택
클래스 선택자 $(“.클래스명”) class속성에 지정한 값을 가진 요소를 선택
요소 선택자 $(“요소명”) 지정한 요소명과 일치하는 요소들만 선택
그룹 선택자 $(“선택 1, 선택 2, 선택3,
선택 n”)
선택1, 선택2, 선택3, …선택n에 지정된 요소들을 한번에 선택
종속 선택자 $(“p.txt_1”)
$(“p#txt_1”)
<p> 요소 중 class갑싱 txt_1인 요소 또는 id값이 txt_1인 요소를 선택
인접 관계
선택자
부모 요소 선택자 $(“요소 선택”).parent() 선택한 요소의 부모 요소를 선택
상위 요소 선택자 $(“요소 선택”).parents() 선택한 요소의 상위 요소를 모두 선택
가장 가까운 상위
요소 선택자
$(“요소 선택”).closest(“div”) 선택한 요소의 상위 요소 중 가장 가까운 <div>만 선택
하위 요소 선택자 $(“요소 선택 하위 요소”) 선택한 요소에 지정한 하위 요소를 선택
자식 요소 선택자 $(“요소 선택>자식 요소”) 선택한 요소를 기준으로 자식 관계에 지정한 요소만 선택
자식 요소들 선택자 $(“요소 선택”).children() 선택한 요소의 모든 자식 요소를 선택
(이전) 요소
선택자
$(“요소 선택”).prev() 선택한 요소의 바로 이전 요소를 선택
(이전) 요소들
선택자
$(“요소 선택”).prevAll() 선택한 요소의 이전 요소 모두를 선택
지정 형(이전) 요소들
선택자
$(“요소 선택”).prevUntil
(“요소명”)
선택한 요소부터 지정한 요소의 이전 요소까지 모두 선택
동생(다음) 요소
선택자
$(“요소 선택”).next()
$(“요소 선택+다음 요소”)
선택한 요소의 다음 요소를 선택
동생(다음) 요소들
선택자
$(“요소 선택”).nextAll() 선택한 요소의 다음 요소 모두를 선택
지정 동생(다음)
요소들 선택자
$(“요소 선택”).nextUntil(“h2”) 선택한 요소부터 지정한 요소의 다음 요소까지 모두 선택
전체 형제 요소
선택자
$(“.box_1”).siblings() class 값이 box_1인 요소의 형제 요소 전체를 선택

 

직접 선택자

  직접 선택자는 주로 멀리 떨어진 요소를 직접 선택할 때 사용하는 선택자이다.

  직접 선택자의 종류로는 전체(*), 아이디(#), 클래스(.), 요소명, 그룹(,) 선택자가 있다.

 

전체 선택자

  전체(universal)요소를 선택할 때 사용한다. 즉, 이 선택자를 사용하면 현재 HTML의 모든 태그를 선택한다.

  전체 선택자의 기본형은 다음과 같다.

$("*")

  다음은 전체 선택자를 사용한 예제이다.

  <head>
    <meta charset="UTF-8">
    <title>선택자</title>
    <script src="js/jquery.js"></script>
    <script>
      $(function(){
        $("*").css("border","1px solid blue");
        //전체 요소 선택자로 두께가 1px인 파란색 실선을 생성한다
      });
    </script>
  </head>
  <body>
    <h1>제이쿼리</h1>
    <h2>선택자</h2>
    <h3>직접 선택자</h3>
  </body>

아이디 선택자

  아이디 선택자는 아이디 속성에 지정한 값을 포함하는 요소를 선택한다.

  아이디 선택자의 기본형은 다음과 같다.

$("#아이디명")

  다음은 아이디 선택자를 사용하기 위한 예제이다.

  <head>
    <meta charset="UTF-8">
    <title>선택자</title>
    <script src="js/jquery.js"></script>
    <script>
      $(function(){
        $("#tit").css("background-color","#ff0")
        .css("border", "2px solid #f00");
        // 체이닝 기법으로 선택한 요소의 css 메소드를 연속해서 2회 적용한다.
      });
    </script>
  </head>
  <body>
    <h1>제이쿼리</h1>
    <h2 id="tit">선택자</h2>
    <h3>직접 선택자</h3>
  </body>

  노란색 배경과 2px 두께의 빨간색 실선이 생성 된다.

  체이닝 기법이란?

      선택한 요소에는 메소드를 연속해서 사용할 수 있는데, 이를 마치 체인이 엮인 모양과 같다고 하여 '체이닝 기법'

      이라 한다. 제이쿼리에서는 한 객체에 다양한 메소드를 줄줄이 이어서 사용할 수 있다.

      메소드 사용이 완료 되면 문장 마지막에는 세미콜론을 작성하여 마무리한다.

$(요소선택).css(속성1, 값1).css(속성2, 값2).css(속성3, 값3);

 

클래스 선택자

  클래스 속성에 지정한 값을 포함하는 요소를 선택한다.

  기본형은 다음과 같다.

$("클래스명")

 

  다음은 문단 태그 영역에 <h2> 태그의 tit이라는 class값을 지정하는 예제이다.

<script>
      $(function(){
        $(".tit").css("background-color","#0ff")
        .css("border", "2px dashed #f00");
      });
</script>
</head>
<body>
    <h1>제이쿼리</h1>
    <h2 id="tit">선택자</h2>
    <h3>직접 선택자</h3>
</body>

 

요소명 선택자

  지정한 요소명(Tag Name)과 일치하는 요소를 모두 선택한다.

  요소명 선택자의 기본형은 다음과 같다.

$("요소명")

  다음은 문단 태그 영역에 요소명 선택자를 적용한 예제이다.

<script>
      $(function(){
        $("h2").css("background-color","#0ff")
        .css("border", "2px dashed #f00");
      });
</script>
</head>
<body>
    <h1>제이쿼리</h1>
    <h2>선택자</h2>
    <h3>직접 선택자</h3>
</body>

그룹 선택자

  그룹 선택자는 한번에 여러개의 요소를 선택할 때 사용한다.

  그룹 선택자의 기본형은 다음과 같다.

$("요소 선택1, 요소 선택2, 요소 선택3, ...요소 선택n");

  다음은 문단 태그 영역에 그룹선택자로 한번에 여러개의 요소를 선택하여 스타일(CSS)을 적용하는 예제이다.

    <script>
      $(function(){
        $("#tit3, h1").css("background-color","#0ff")
        .css("border", "2px dashed #f00");
      });
    </script>
  </head>
  <body>
    <h1>제이쿼리</h1>
    <h2>선택자</h2>
    <h3 id="tit3">직접 선택자</h3>
    <h3>인접 선택자</h3>
  </body>

 

종속 선택자

  종속 선택자는 선택한 요소의 id 또는 class 값이 일치하는 요소를 선택할 때 사용한다.

  종속 선택자의 기본형은 다음과 같다.

$("요소명#id 값")
$("요소명.class 값")

  다음은 종속 선택자로 요소명과 class값이 일치하는 요소를 선택하여 스타일(CSS)을 적용하는 예제이다.

    <script>
      $(function(){
        $("h1.tit").css("background-color","#0ff")
        .css("border", "2px dashed #f00");
      });
    </script>
  </head>
  <body>
    <h1 class="tit">제이쿼리</h1>
    <h2>선택자</h2>
    <h3 id="tit">직접 선택자</h3>
  </body>

인접 관계 선택자

  직접 선택자로 요소를 먼저 선택하고 그 다음 선택한 요소와 가까이에 있는(이전과 다음요소)요소를 선택할 때

  사용한다. 인접관계 선택자를 자유자재로 사용하려면 문서 객체 구조와 관계를 잘 이해하고 있어야 한다.

문서 객체 구조와 관계

<body>
  <div id="wrap">	// a
    <div id="inner_wrap"> // b
      <h1>제목</h1>	//d
      <h2>제목</h2>	//e
      <p>내용1</p>	//f
      <p>내용2</p>
      <p>내용3</p>	//<h1>부터 여기까지 c
    </div>
  </div>
</body>
      

  a는 c의 상위(closet)요소이고 c는 a의 하위 요소이다.

  b는 c의 부모(parent) 요소이고 c는 b의 자식(children)요소이다.

  d는 e의 형(prev)요소 이며 f는 e의 동생(next)요소이다.

1. $("h2").next().css("color", "green");
2. $("h2").parent().css("border", "1px solid #f00");

  1은 동생 요소 선택자인 next()함수를 사용하여 <h2>의 동생요소인 <p>내용1</p>를 선택한 다음

  글자색을 초록색으로 적용한다. 2는 부모 요소 선택자인 parent() 함수를 사용하여 <h2>의 부모 요소인

  <div id="inner_wrap">을 선택한 다음 1px 두께의 빨간색 실선을 생성한다.

 

부모 요소 선택자

  부모 요소 선택자는 선택한 요소를 감싸고 있는 부모 요소를 선택한다.

  기본형은 다음과 같다.

$("요소 선택").parent();

  다음은 문단 태그 영역의 부모 요소 선택자를 적용한 예제이다.

  <li id="list_1">의 부모요소는 안쪽에 있는 <ul>태그이다.

    <script>
      $(function(){
        $("#list_1").parent() //<ul> <li id="list_1">제이쿼리</li>
        .css("border", "2px dashed #f00");
      });
    </script>
  </head>
    <body>
      <h1>인접 관계 선택자</h1>
      <ul id="wrap">
        <li>리스트1
          <ul>
            <li id="list_1">리스트1-1</li>  <!-- <ul>의 자식인 <li>태그 -->
            <li>리스트1-2</li>
          </ul>
        </li>
        <li>리스트2</li>
        <li>리스트3</li>
      </ul>
    </body>

 

하위 요소 선택자

  하위 요소 선택자는 기준 요소로 선택한 하위 요소만 선택한다.

  기본형은 다음과 같다.

$("기준 요소 선택 1 요소 선택2")
ex) $("#wrap h1")	//id="wrap"인 요소가 기준 요소가 된다.

  다음은 하위 요소 선택자를 적용한 예제이다.

  id값이 "wrap"인 요소가 감싸고 있는 <h1>을 모두 선택한다.

    <script>
      $(function(){
        $("#wrap h1")
        .css({
          "background-color":"yellow",
          "border":"2px dashed #f00"
        });
      });
      </script>
  </head>
  <body>
    <div id="wrap">
      <h1>인접 관계 선택자</h1>
      <p>내용1</p>
      <section>
        <h1>하위 요소 선택자</h1>
        <p>내용2</p>
      </section>
    </div>
  </body>

 

자식 요소 선택자

  자식 요소 선택자는 선택된 요소를 기준으로 지정한 자식 요소만 선택한다.

  기본형은 다음과 같다.

1. $("요소 선택>자식 요소 선택")
2. $("요소 선택").children("자식 요소 선택")
3. $("요소 선택").children()

  1,2 는 선택한 요소를 기준으로 지정한 자식 요소만 선택한다.

  3은 선택한 요소를 기준으로 모든 자식 요소를 선택한다.

 

  다음은 문단 태그 영역에 자식 요소 선택자를 적용한 예제이다.

 

    <script>
      $(function(){
        $("#wrap > h1").css("border", "2px dashed #f00");
        //1. <div id="wrap"> <h1>인접 관계 선택자</h1>
        $("#wrap > section").children()
        //2. <section> <h1>자식 요소 선택자</h1> <p>내용2</p> </section>
        .css({
          "background-color":"yellow",
          "border":"2px solid #f00"
        });
      });
      </script>
  </head>
  <body>
    <div id="wrap">
      <h1>인접 관계 선택자</h1>
      <p>내용1</p>
      <section>
        <h1>자식 요소 선택자</h1>
        <p>내용2</p>
      </section>
    </div>
  </body>

  1번은 인자값을 사용해 css속성과 값을 전달하는 방식이다.

     $("요소 선택").css("속성명1","값1").css("속성명2","값2");

  2번은 객체를 사용해 css속성과 값을 전달하는 방식이다.

     $("요소 선택").css({"속성명1": "값1", "속성명2":"값2"...."속성명n":"값n"});

 

형(이전)/동생(다음) 요소 선택자

  형 요소 선택자는 선택한 요소를 기준으로 바로 이전 형제 요소만 선택한다.

  그리고 동생 요소 선택자는 선택한 요소를 기준으로 바로 다음 형제 요소만 선택한다.

1. $("요소 선택").prev()
2. $("요소 선택").next()
3. $("요소 선택1 + 요소 선택2")

  1. 선택한 요소를 기준으로 이전에 오는 형제 요소만 선택.

  2. 선택한 요소를 기준으로 다음에 오는 형제 요소만 선택.

  3. 선택한 요소를(요소 선택1) 기준으로 다음에 오는 선택한 요소(요소 선택2)만 선택.

 

  다음은 문단 태그 영역에 형 요소 선택자와 동생 요소 선택자를 적용한 예제이다.

  class값이 txt인 요소를 기준으로 이전 형제요소(<p>내용1</p>)와 다음 형제요소(<p>내용3</p>), 다음다음 

  형제 요소(<p>내용4</p>)를 선택한다.

    <script>
      $(function(){
        var style_1={
          "background-color":"#0ff",
          "border":"2px solid #f00"
        }
        var style_2={
          "background-color":"#ff0",
          "border":"2px dashed #f00"
        }

        $(".txt").prev()
        .css(style_1);
        //<p>내용1</p>
        //<p class="txt">내용2</p>

        $(".txt+p").css(style_2);
        //<p class="txt">내용2</p>
        //<p>내용3</p>

        $(".txt").next(),next()
        .css(style_2);
        //<p class="txt">내용2</p>
        //<p>내용3</p>
        //<p>내용4</p>
      });
      </script>
  </head>
  <body>
    <div id="wrap">
      <h1>인접 관계 선택자</h1>
      <p>내용1</p>
      <p class="txt">내용2</p>
      <p>내용3</p>
      <p>내용4</p>
    </div>
  </body>

전체 형(이전)/동생(다음)요소 선택자

  전체 형 요소 선택자는 선택한 요소를 기준으로 이전에 오는 전체 형제 요소를 선택한다.

  그리고 전체 동생 요소 선택자는 선택한 요소를 기준으로 다음에 오는 전체 형제 요소를 선택한다.

$("요소 선택").prevAll()
$("요소 선택").nextAll()

  다음은 문단 태그 영역에 전체 형 요소 선택자와 전체 동생 요소 선택자를 적용한 예제이다.

    <script>
      $(function(){
        var style_1={
          "background-color":"#0ff",
          "border":"2px solid #f00"
        }
        var style_2={
          "background-color":"#ff0",
          "border":"2px dashed #f00"
        }

        $(".txt").prevALl()
        .css(style_1);
        //<h1>인접 관계 선택자</h1>
        //<p>내용1</p>
        //<p class="txt">내용2</p>

        $(".txt+p").nextAll()
        .css(style_2);
        //<p class="txt">내용2</p>
        //<p>내용3</p>
        //<p>내용4</p>
      });
      </script>
  </head>
  <body>
    <div id="wrap">
      <h1>인접 관계 선택자</h1>
      <p>내용1</p>
      <p class="txt">내용2</p>
      <p>내용3</p>
      <p>내용4</p>
    </div>
  </body>

전체 형제 요소 선택자

  전체 형제 요소 선택자는 선택하 ㄴ요소의 모든 형제 요소를 선택한다.

  기본형은 다음과 같다.

$("요소 선택").siblings();

  다음은 문단 태그 영역에 전체 형제 요소 선택자를 적용한 예제이다.

    <script>
      $(function(){
        var style_1={
          "background-color":"#0ff",
          "border":"2px solid #f00"
        }

        $(".txt").siblings()
        .css(style_1);
        //<h1>인접 관계 선택자</h1>
        //<p>내용1</p>
        //<p class="txt">내용2</p>
        //<p>내용3</p>
        //<p>내용4</p>
      });
      </script>
  </head>
  <body>
    <div id="wrap">
      <h1>인접 관계 선택자</h1>
      <p>내용1</p>
      <p class="txt">내용2</p>
      <p>내용3</p>
      <p>내용4</p>
    </div>
  </body>

범위 제한 전체 형/동생 요소 선택자

  범위 제한 전체 형/동생 요소 선택자는 선택한 요소를 기준으로 형제 요소 중 지정한 범위 내의 전체 형 요소 또는

  전체 동생 요소를 선택한다.

  기본형은 다음과 같다.

1. $("요소 선택").prevUntil("범위 제한 요소 선택")
2. $("요소 선택").nextUntil("범위 제한 요소 선택")

  1. 선택한 요소를 기준으로 범위 제한 요소까지 전체 형 요소를 선택한다.

  2. 선택한 요소를 기준으로 범위 제한 요소까지 전체 동생 요소를 선택한다.

 

  다음은 범위 제한 전체 형/동생 선택자를 적용한 예제이다.

  class값이 txt3인 요소를 기준으로 전체 형/동생 요소를 선택한다.

    <script>
      $(function(){
        var style_1={
          "background-color":"#0ff",
          "border":"2px solid #f00"
        }

       $(".txt3").prevUntil(".title")
       .css(style_1);

       $(".txt3").nextUntil(".txt6")
       .css(style_1);
        //<h1 class="title">선택자</h1>
        //<p>내용1</p>
        //<p>내용2</p>
        //<p class="txt3">내용3</p>
        //<p>내용4</p>
        //<p>내용5</p>
        //<p class="txt6">내용6</p>
      });
      </script>
  </head>
  <body>
    <div id="wrap">
      <h1>인접 관계 선택자</h1>
      <p>내용1</p>
      <p>내용2</p>
      <p class="txt3">내용3</p>
      <p>내용4</p>
      <p>내용5</p>
      <p class="txt6">내용6</p>
    </div>
  </body>

상위 요소 선택자

  상위 요소 선택자는 선택한 요소를 기준으로 모든 상위 요소를 선택하거나 상위 요소 중 선택하고자 하는 요소만

  선택할 때 사용한다.

1. $("요소 선택").parents()
2. $("요소 선택").parents("요소 선택")

  1. 선택한 요소를 기준으로 상위 요소를 모두 선택한다.

  2. 선택한 요소를 기준으로 상위 요소 중 선택한 요소만 선택한다.

 

  다음은 문단 태그 영역에 상위 요소 선택자를 적용한 예제이다.

    <script>
      $(function(){
       $(".txt1").parents() //<p class="txt1">내용</p>의 전체 상위
                            //요소를 선택.
       .css({
         "border":"2px dashed #00f"
       });

       $(".txt2").parents("div") //<p class="txt2">내용</p>의 전체
                                 //상위 요소 중 <div>만 선택
       .css({
         "border":"2px solid #f00"
       });
      });
      </script>
  </head>
  <body>
    <h1 class="title">선택자</h1>
    <section>
      <div>
        <p class="txt1">내용</p>    //전체 상위 요소 선택
      </div>
    </section>
    <section>
      <div>
        <p class="txt2">내용</p>.		//상위 요소 중 <div>만 선택
      </div>
    </section>  
  </body>

가장 가까운 상위 요소 선택자

  가장 가까운 상위 요소 선택자는 선택한 요소를 기준으로 가장 가까운 상위 요소만 선택할 때 사용된다.

  기본형은 다음과 같다.

$("요소 선택").closest("요소 선택")

  다음은 가장 가까운 상위 요소 선택자를 적용한 예제이다.

    <script>
      $(function(){
       $(".txt1").closest("div")
       .css({
         "border":"2px solid #f00"
       });
       //<div>
       // <div>
       //   <p class="txt1">내용</p>
       // </div>
       //</div>
      </script>
  </head>
  <body>
    <h1 class="title">선택자</h1>
    <div>
      <div>
        <p class="txt1">내용</p>
      </div>
    </div> 
  </body>

 

(참고 : do it 자바스크립트+제이쿼리 입문)

'Front > JQuery' 카테고리의 다른 글

JQuery(이벤트 등록 메소드)  (0) 2020.05.22
JQuery(객체조작)  (0) 2020.05.20
JQuery(속성 탐색 선택자)  (0) 2020.05.20
JQuery(위치탐색선택자)  (0) 2020.05.20
jquery(연동)  (0) 2020.05.20

제이쿼리란?

  제이쿼리는 자바스크립트를 이용해 만든 라이브러리 언어이다.

  제이쿼리는 자바스크립트에서 사용할 때 불편했던 몇가지 점들을 간편하게 사용할 수 있도록 개선했다.

  

  호환성 문제 해결

    자바스크립트의 문서 객체 모델(DOM)과 이벤트 객체(Event Object)는 호환성(크로스 브라우징)이 떨어진다는

    단점이 있다. 예를 들어 인접 요소 선택자 중 다음 요소 선택자(nextSibling)는 IE8 이하의 브라우저에서 문서 객체를

    선택했을 때와 다른 브라우저에서 문서 객체를 선택햇을때의 결과가 다르다.

    하지만 이런 문서객체 선택자의 호환성 문제가 제이쿼리에서는 모두 해결되었다.

  

  쉽고 편리한 애니메이션 효과 기능 구현

    제이쿼리는 애니메이션과 다양한 효과(Effect)를 지원하는 메소드를 제공하기 때문에 개발 시간을 많이 단축할 수

    있다.

 

제이쿼리 라이브러리 연동

  제이쿼리 연동방법에는 다운로드 방식과 네트워크 전송방식 두가지가 있다.

  다운로드 방식은 파일을 직접 내려받아 HTML에 불러오는 방식이다.

  네트워크 전송방식은 온라인에서 제공하는 파일을 네트워크를 통해 HTML에 불러오는 방식이다.

  다운로드 방식은 네트워크 상태아 상관없이 언제든 개발할 수 있다는 장점이 있지만 컴퓨터에 파일을 내려받아야

  한다. 간단히 테스트 할 목적이라면 네트워크 전송방식이 더 편하다.

 

다운로드 방식으로 연동

  https://cdnjs.com/libraries/jquery 

 

jquery - cdnjs.com - The best FOSS CDN for web related libraries to speed up your websites!

jquery - JavaScript library for DOM operations - cdnjs.com - The best FOSS CDN for web related libraries to speed up your websites!

cdnjs.com

  위 사이트에서 jquery를 검색하고 라이브러리를 선택한다.

  그런 다음 버전 선택 상자에서 1.12.4를 선택.

  만약 IE8이하 브라우저까지 호환성을 염두에 둔다면 1.12.X이하 버전의 라이브러리 파일을 사용해야 한다.

  

  선택한 라이브러리 파일 목록에 [jquery.js], [jquery.min.js]가 있다. 해당 목록에 마우스 포인터를 올리면 [copy]버튼이

  나타나고 버튼을 누르면 해당하는 라이브러리 파일의 URL주소가 복사된다.

종류 설명
jquery.js 소스에 들여쓰기, 줄 바꿈, 주석까지 정리된 비압축 파일로, 제이쿼리 자체를 개발할 때 유용하다.
jquery.min.js 소스에 들여쓰기, 줄 바꿈, 줙이 무시된 압축파일로, 소스가 압축되어 있어 제이쿼리 자체를 개발하는 용도로는 적합하지 않다. 하지만 용량이 작아 로딩속도가 빠르다.

  복사한 URL로 이동한다. 그다음 Ctrl + S를 눌러 페이지를 저장한다.

  이때 js파일은 HTML파일이 있는 폴더에 'js'라는 이름으로 폴더를 만들어 저장하면 된다.

 

  HTML의<head> 영역에 <script>태그를 삽입하여 제이쿼리 라이브러리 파일을 불러온다.

<head>
  <meta charset="UTF-8">
  <title>제이쿼리 연동</title>
  <script src="js/jquery.js"></script>
</head>

  제이쿼리는 최신버전으로 자주 업그레이드 되는데 이전 버전에서 자주 사용했던 기능(메소드)이 삭제되어 사용할 수 

  없는 경우가 종종있다. 이런경우 이전버전의 기능을 사용하려면 'Migrate plugin'을 설치하면 된다.

 

네트워크 방식으로 연동

  cdnjs사이트에 들어가서 제이쿼리(1.12.4) 라이브러리 파일의 URL을 복사한다.

  <script> 태그 src속성에 복사한 URL을 붙여 넣는다.

<head>
  <meta charset="UTF-8">
  <title>제이쿼리 연동</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.js"></script>
</head>

 

(참고 : do it 자바스크립트+제이쿼리 입문)

'Front > JQuery' 카테고리의 다른 글

JQuery(이벤트 등록 메소드)  (0) 2020.05.22
JQuery(객체조작)  (0) 2020.05.20
JQuery(속성 탐색 선택자)  (0) 2020.05.20
JQuery(위치탐색선택자)  (0) 2020.05.20
jquery(선택자)  (0) 2020.05.20

객체(Object)

  객체는 기능과 속성을 갖고 있다.

  예를 들어 TV에는 켜다, 끄다, 음소거, 볼륨 높낮이 조절 등이 있다.

  이렇듯 TV라는 객체에는 다양한 기능이 있다.

  객체 안에는 메소드(Method), 속성(Property)이라는 것이 있고, 메소드는 기능인 켜기, 끄기, 음소거, 볼륨 높낮이

  조절이고, 속성은 너비, 높이, 색상, 무게이다.

 

자바스크립트에서 객체의 메소드와 속성을 사용하는 기본형은 다음과 같다.

객체.메소드();	//객체의 메소드를 실행한다.

객체.속성; //객체의 속성값을 가져온다

또는 객체.속성=값; //객체의 속성값을 바꾼다.

객체의 종류

  내장객체

    내장객체는 자바스크립트 엔진에 내장되어 있어 필요한 경우에 생성해서 사용할 수 있다.

    내장객체로는 문자(String), 날짜(Date), 배열(Array), 수학(Math) 객체 등이 있다.

    가령, 오늘 날짜를 알고 싶다면 Date 객체를 생성하여 오늘 날짜를 알려준느 메소드 getDate()를 사용하면 된다.

  브라우저 객체 모델

    브라우저 객체모델(BOM)은 브라우저에 계층 구조로 내장되어 있는 객체를 말한다.

    브라우저 객체로는 window, screen, location, history, navigator 객체 등이 있다.

    브라우저(window)는 document와 loaction 객체의 상위 객체이다.

    예를 들어 자바스크립트를 이용해 현재 열려있는 사이트에서 다른사이트로 이동하려면 location 객체에

    참조주소(href) 속성을 바꾸면 된다. 다음과 같이 실행하면 location의 참조 주소(href)의 속성이 바뀌어

    새 주소 사이트로 이동한다.

window.location.href="사이트 URL"

  문서 객체 모델

    문서객체모델(DOM)은 HTML 문서 구조를 말한다.

    HTML 문서의 기본 구조는 최상위 객체로 <html>이 있으며, 그 하위 객체로는 <head>와 <body>가 있다.

    예를 들어 자바스크립트를 이용해 이미지의 src 속성을 바꾸고 싶다면 지정된 <img>를 선택해 src속성을

    바꿔야 한다.

    이때, 지정 요소를 제대로 선택해서 가져오려면 문서 객체의 구조를 잘 이해하고 있어야 한다.

    문서객체모델에서는 HTML의 모든 요소들을 문서 객체로 선택하여 자유롭게 속성을 바꿀 수 있고,

    선택한 문서 객체에 원하는 스타일(css)을 적용할 수도 있다.

 

    하지만 자바스크립트의 문서 객체모델은 IE 8이하 버전에서는 호환성이 떨어지기 때문에 사용하기 힘들다는 

    단점이 있다.

    그래서 이러한 점을 극복하기 위해 JQuery 문서 객체모델을 많이 사용한다.

 

내장객체

  다음은 내장객체를 생성하는 기본형이다.

  객체를 생성할 때는 new라는 키워드와 생성함수를 사용한다.

참조변수(인스턴스 이름) = new 생성함수()

 

  다음 예제에서는 new 키워드와 기본객체 생성함수 Object()를 이용해 객체를 생성한다.

  생성된 객체는 변수 tv가 참조하고 있으며, 이를 이용해 객체의 속성과 메소드를 생성한다.

  변수를 이용해 참조를 한다는 말은 생성된 객체를 이용할 때 참조 변수를 사용하겠다는 의미이다.

 

  <script>
      var tv = new Object();
      tv.color = "white";
      tv.price = 300000;
      tv.info = function(){
        document.write("tv 색상:"+this.color, "<br>");
        document.write("tv 가격:"+this.price, "<br>");
        <!-- 위에서 this는 메소드의 객체(tv)를 가리킨다.-->
      }

      var car={
        color: "black",
        price: 5000000,
        info:function(){
          document.write("car 색상:"+this.color, "<br>");
          document.write("car 가격:"+this.price, "<br>");
        }
      };

      document.write("<h1>tv 객체 메소드 호출</h1>");
      tv.info();
      document.write("<h1>car 객체 메소드 호출</h1>");
      car.info();
    </script>

날짜 정보 객체

  날짜나 시간 관련 정보를 제공받고 싶을 때 사용한다.

  현재 날짜의 정보를 제공하는 Date 객체는 다음과 같이 생성한다.

참조변수=new Date();

var t = new Date();

  특정 날짜를 제공 받아야 할때는 다음과 같이 생성한다.

참조변수=new Date("연/월/일);

var t=new Date("2020/05/19);

참조변수=new Date(연, 월-1, 일);

var t=new Date(2020,04,19);

  다음은 현재 날짜 객체와 특정 날짜 객체를 이용하여 2002년 월드컵 날짜와 관련된 정보를 출력하는 예제이다.

<script>
    var today = new Date();
    var nowMonth=today.getMonth(),
    nowDate = today.getDate(),
    nowDay = today.getDay();

    document.write("<h1>오늘 날짜 정보</h1>");
    document.write("현재 월:"+nowMonth, "<br>");
    document.write("현재 일:"+nowDate, "<br>");
    document.write("현재 요일:"+nowDay, "<br>");

    var worldcup=new Date(2002,04,31);
    var theMonth=worldcup.getMonth(),
    theDate=worldcup.getDate(),
    theDay=worldcup.getDay();

    document.write("<h1>월드컵 날짜 정보</h1>");
    document.write("2002월드컵 몇월:"+theMonth, "<br>");
    document.write("2002월드컵 몇일:"+theDate, "<br>");
    document.write("2002월드컵 무슨요일:"+theDay, "<br>");
</script>

작성한 날짜는 5월 19일 이지만 getMonth는 -1을 하기 때문에 4월로 나오는것을 확인 할 수있다.

 

  현재 날짜부터 특정 날짜까지 몇일이 남았는지 구하는 형식은 다음과 같다.

남은일수(밀리초) = 특정 날짜 객체 - 현재 날짜 객체
<script>
      var today=new Date();
      var nowYear=today.getFullYear();

      var theDate=new Date(nowYear, 11, 31);
      <!-- 올해 연말에 대한 날짜 정보 객체.
           12월까지 있지만 -1을 해서 적어줘야 하므로
           11로 작성.-->
      var diffDate=theDate.getTime() - today.getTime();
      <!-- 남은날 = 특정날짜 - 현재날짜(밀리초단위)-->

      var result = Math.ceil(diffDate/(60 * 1000 * 60 * 24));
      document.write("연말 D-day:"+result+"일 남았습니다");
</script>

수학객체

  다음은 수학 객체의 메소드와 참조할 수 있는 상수에 대해 정리한 표이다.

  다음은 수학 객체에 포함되어 있는 수학 메소드에 숫자를입력하여 결과값을 반환 받는 예제이다.

<script>
      var num=2.1234;

      var maxNum=Math.max(10, 5, 8, 30),  //30 최대값
      var minNum=Math.min(10, 5, 8, 30),  //5  최소값
      var roundNum=Math.round(num),   //2 소수점 첫째자리 반올림
      var floorNum=Math.floor(num),   //2 소수점 첫째자리 내림
      var ceilNum = Math.ceil(num),   //3 소수점 첫째자리 올림
      var rndNum = Math.random(),   //0~1 0과 1사이의 난수 발생
      piNum = Math.PI;    //3.14  원주율 상수를 반환

      document.write(maxNum, "<br>");
      document.write(minNum, "<br>");
      document.write(roundNum, "<br>");
      document.write(floorNum, "<br>");
      document.write(ceilNum, "<br>");
      document.write(rndNum, "<br>");
      document.write(piNum, "<br>");
</script>

 random()메소드를 이용하여 지정한 숫자 구간에서 난수가 발생할 수 있도록 하려면?

다음와 같이 하면 0부터 10까지 난수를 반환한다.

Math.random()*10;

만일 Math.random()을 이용하여 0부터 10까지 정수로만 난수를 반환하려면 다음과 같이 Math.floor를 이용해야 한다.

floor()메소드는 값을 내리기때문에 0이 아닌 11을 사용한다.

Math.floor(Math.random()*11);

 

Math.random()를 이용하여 120~150 사이의 난수를 정수로만 발생하게 하려면 다음과 같이 한다.

Math.floor(Math.random()*31);		<!-- 0부터 30까지 정수로 난수를 발생한다 -->
Math.floor(Math.random()*31)+120;	<!-- 120부터 150까지 정수로 난수를 발생한다 -->

  즉, 난수를 발생하여 자신이 원하는 구간 사이에서 정수가 발생하게 하려면 다음과 같은 공식을 적용해야 한다.

Math.floor(Math.random()*(최대값-최소값+1))+최소값;

  다음은 웹사이트 방문 시 나타나는 창에 방문자가 가위, 바위, 보를 적어 컴퓨터가 내려는 가위, 바위, 보를 추측해

  맞추는 예제이다. 여기에서도 난수를 사용한다.

<script>
      document.write("<h1>컴퓨터 가위, 바위, 보 맞추기</h1>");

      var game = prompt("가위, 바위, 보 중 선택하세요", "가위");
      var gameNum;

      switch(game){
        case "가위";
          gameNum = 1;
          break;
        case "바위";
          gameNum = 2;
          break;
        case "보";
          gameNum = 3;
          break;
        default: alert("잘못 작성했습니다.");
        location.reload();
      }

      var com = Math.ceil(Math.random()*3); <!-- 1~3에서 난수가 발생한다.-->

      document.write("<img src=\"images/math_img_"+com+".jpg\">");

      if(gameNum == com){ <!-- gameNum과 com이 일치하는지 검사한다 -->
        document.write("<img src=\"images/game_1.jpg\">");
      }else{
        document.write("<img src=\"images/game_2.jpg\">");
      }
</script>

 

 

배열 객체

  여러개의 데이터를 하나의 저장수에 저장하려면 배열객체(Array Object)를 생성하면 된다.

  배열 객체를 생성하는 기본형은 다음과 같다.

var 참조변수=new Array();
참조변수[0]=값1; 참조변수[1]=값2; 참조변수[2]=값3; .... 참조변수[n-1]=값n;
var 참조변수=new Array(값1, 값2, 값3, ...값n);
var 참조변수=[값1, 값2, 값3, ....값n];

  배열 객체를 생성하는 방법은 다음과 같이 세가지이며, 이 중에서 선호하는 방식을 사용하면 된다.

1

var d=new Array();
d[0]=30;
d[1]="따르릉";
d[2]=true;
2

var d=new Array(30, "따르릉", true);
3

var=d=[30, "따르릉", true];

 

배열 객체에 저장된 데이터 불러오기

  배열객체에 저장된 데이터를 불러올 때는 다음과 같은 기본형을 사용한다.

참조변수[인덱스 번호];

  다음은 배열 객체에 저장된 값들을 모두 출력하는 예제이다.

  3개의 실행문은 모두 같은 결과를 출력한다.

<script>
	var arr = [30, "따르릉", true];
	
	document.write("<h3>배열값 가져오기-1</h3>");
	document.write(arr[0],"<br>");
	document.write(arr[1],"<br>");
	document.write(arr[2],"<br>");
	
	document.write("<h3>배열값 가졍괴-2</h3>");
	for(var i=0; i<arr.length; i++){
		document.write(arr[i], "<br>");
	}
	
	document.write("<h3>배열값 가져오기-3</h3>");
	for(i in arr){
		document.write(arr[i], "<br>");
	}
</script>

  다음은 배열 객체에서 사용할 수 있는 메소드와 속성이다.

  다음은 배열 객체 메소드인 join(), concat(), slice(), sort(), reverse()를 사용한 예제이다.

<script>
	var arr_1=["사당", "교대", "방배", "강남"];
	var arr_2=["신사", "압구정", "옥수"];
	
	var result=arr_1.join("-");
	console.log(result);
	
	result=arr_1.concat(arr_2);
	console.log(result);
	
	result=arr_1.slice(1,3);
	console.log(result);
	
	arr_1.sort();
	console.log(arr_1);
	
	arr_2.reverse();
	console.log(arr_2);
</script>

  다음은 배열 객체 메소드인 splice(), pop(), push(), shift(), unshift()를 사용한 예제이다.

<script>
	var greenArr=["교대", "방배", "강남"];
	var yellowArr=["미금", "정자", "수서"];
	
	greenArr.splice(2, 1, "서초", "역삼"); <!-- 2번 인덱스부터 1개의 데이터를 삭제한다. 그런다음 "서초", "역삼"을 삽입한다. -->
	console.log(greenArr);
	
	var data1 = yellowArr.pop(); <!-- yellowArr 배열 마지막 인덱스의 데이터를 data 1에 저장-->
	var data2 = yellowArr.shift(); <!-- yellowArr 배열 가장 앞쪽 인덱스의 데이터를 data2에 저장한다 -->
	
	yellowArr.push(data2);<!--data2에 저장된 데이터를 yellowArr 배열의 마지막 인덱스에 밀어 넣는다-->
	console.log(yellowArr);
	
	yellowArr.unshift(data1);<!--data1에 저장된 데이터를 yellowArr 배열의 가장 앞쪽 인덱스에 밀어 넣는다-->
	console.log(yellowArr);	
</script>

문자열 객체

  문자열 객체는 문자형 데이터를 객체로 취급하는 것으로, 자바스크립트에서 가장 많이 사용한다.

 

문자열 객체 생성하기

  문자열 객체를 생성하는 기본형은 다음과 같이 new 키워드와 String()메소드를 사용한다.

var 참조변수=new String(문자형 데이터)

var t=new String("hello javascript"); <!-- 문자열 객체 생성-->

  문자열 객체는 다음과 같이 참조 변수에 문자형 데이터만 입력해도 객체가 생성된다.

var 참조변수=문자형데이터

var t="hello javascript"; <!-- 문자열 객체 생성-->

  문자열 객체는 문자와 관련된 메소드와 속성을 제공하며, 이를 사용해 문자에 대한 다양한 정보를 얻을 수 있다.

문자열 객체의 메소드 및 속성

종류

설명

charAt(index)

문자열에서 인덱스 번호에 해당하는 문자를 반환한다.

) var str=”web he she”; str.charAt(2); <- “b”를 반환

indexOf(“찾을 문자”)

문자열에서 왼쪽부터 찾을 문자와 일치하는 문자를 찾아 제일 먼저 일치하는 문자의 인덱스 번호를 반환. 만일 찾는 문자가 없으면 -1을 반환.

) var str=”web he she he”; str.indexOf(“he”); <- 4를 반환

lastIndexOf(“찾을 문자”)

문자열에서 오른쪽부터 찾을 문자와 일치하는 문자를 찾아 제일 먼저 일치하는 문자의 인덱스 번호를 반환. 만일 찾는 문자가 없으면 -1을 반환.

) var str=”web he she he”; str.lastIndexOf(“he”) <- 11을 반환

match(“찾을 문자”)

문자열에서 왼쪽부터 찾을 문자와 일치하는 문자를 찾아 제일 먼저 찾은 문자를 반환한다. 만일 찾는 문자가 없으면 null을 반환.

) var str=”web he she he”; str.match(“boy”); <-null을 반환

replace(“바꿀 문자”, “새 문자”)

문자열에서 왼쪽부터 바꿀 문자와 일치하는 문자를 찾아 제일 먼저 찾은 문자를 새 문자로 치환한다.

) var str=”web he she”; str.replace(“web”,”html”); <- “html he she”를 반환

search(“찾을 문자”)

문자열에서 왼쪽부터 찾을 문자와 일치하는 문자를 찾아 제일 먼저 일치하는 인덱스 번호를 반환.

) var str=”web he she”; str.search(“he”); <- 4를 반환

Slice(a, b)

a개의 문자를 자르고 b번째 이후에 문자를 자른 후 남은 문자를 반환

) var str=”hello javascript” str.slice(3, 7); <- “lo j”를 반환

str.slice(3, 7); 은 문자열에서 3글자 “hel”까지 자르고 7번째 이후 글자인 “j”이이부터 “avascript”를 자른후 나머지 “lo j”를 반환

) var str=”hello javascript” str.slice(3, -3); <-“llo javascr”를 반환

여기에서 -1은 뒤에서부터 첫번째 글자를 가리킨다.

substring(a, b)

a 인덱스부터 b 인덱스 이전 구간의 문자를 반환.

) var str=”hello javascript” str.substring(3, 7); <- “lo j”를 반환

) var str=”hello javascript” str.substring(3, -3); <- “hel”을 반환.

여기에서 -3은 인덱스 0을 가리킨다.

그러므로 인덱스 0부터 인덱스 3 이전 구간의 문자를 반환

Substr(a, 문자개수)

문자열에 a 인덱스부터 지정한 문자 개수만큼 문자열을 반환.

) var str=”hello javascript” str.substring(3,2); <- “lo”를 반환

str.str(3, 2);3 문자열에서 인덱스 3“l”부터 2글자를 가져와서 “lo”를 반환

Split(“문자”)

지정한 문자를 기준으로 문자 데이터를 나누어 배열에 저장하여 반환

) var str=”webkmobilek2002”;

(index)

var arr=str.split(“k”); <- arr[0]= “web”arr[1]=”mobile” arr[2]=”2002”

toLowerCase()

문자열에서 영문 대문자를 모두 소문자로 바꾼다.

) var str=”ABC”; str.toLowerCase(); <- “abc”를 반환

toUpperCase()

문자열에서 영문 소문자를 모두 대문자로 바꾼다.

) var str=”abc”, str.toUpperCase(); <-“ABC”를 반환

length

문자열에서 문자의 개수를 반환

) var str=”hello welcome”; str.length <- 13을 반환

concat(“새로운 문자”)

문자열에 새로운 문자열을 결합

) var str=”hello”; str.concat(“web”); <- “hello web”을 반환

charCodeAt(index)

문자열 index에 해당 문자의 아스키 코드값을 반환

) var str=”ABC”; str.charCodeAt(0) <- “A”의 아스키 코드값 65를 반환

fromCharCode(아스키 코드 값)

아스키 코드값에 해당하는 문자를 반환

) String fromCharCode(65); <- “A”를 반환

trim()

문자의 앞 또는 뒤에 공백 문자열을 삭제(“hello” -> “hello”);

) str=”hello”; str.trim(); <- 공백이 제거된 “hello”를 반환

   다음은 문자열 객체 메소드와 속성을 사용한 예제이다. 문자열 객체에 내장되어 있는 메소드를 사용하여 현재 문자에

   지정한 위치(인덱스)또는 특정 문자에 대한 정보를 불러와 출력한다.

<script>
	var t="Hello Thank you good luck to you";
		document.write(t.charAt(16), "<br/>");	<!--인덱스 16에 저장된 문자를 불러온다 -->
		document.write(t.indexOf("you"), "<br/>"); <!-- 문자열 왼쪽에서 부터 제일 먼저 발견된 "you"의 인덱스 값을 반환-> 12-->
		document.write(t.indexOf("you", 16), "<br/>"); <!--문자열 인덱스 16 위치부터 제일 먼저 발견된 "you"의 인덱스 값을 반환 ->29-->
		docuemnt.write(t.lastIndexOf("you"),"<br/>");<!-- 문자열 오른쪽에서부터 왼쪽 방향으로 제일 먼저 발견된 "you"의 인덱스 값을 반환->29-->
		document.write(t.lastIndexOf("you",25), "<br/>");<!--문자열 인덱스 25부터 왼쪽방향으로 제일 먼저 발견된 "you"의 인덱스 값을 반환 ->12-->
		document.write(t.match("luck"), "<br/>");<!--문자열 왼쪽에서부터 제일 먼저 발견된 "luck"과 일치되는 문자를 찾아 반환-->
		document.write(t.search("you"), "<br/>");<!--문자열 왼족에서부터 제일 먼저 발견된 "you"의 인덱스 값을 반환->12-->
		document.write(t.substr(21,4), "<br/>");<!--문자열 인덱스 21부터 네글자를 가져온다 -> "luck"-->
		document.write(t.substring(6,12), "<br/>");<!--문자열 인덱스 6부터 12이전까지의 문자를 가져온다 ->"Thank"-->
		document.write(t.replace("you","me"), "<br/>");<!--문자열 왼쪽에서부터 제일 먼저 발견된 "you"를 "me"로 치환한다 -->
		document.write(t.toLowerCase(), "<br/>");<!-- 문자열의 영문자가 모두 소문자로 바뀐 문자열을 반환 -->
		document.write(t.toUpperCase(), "<br/>");<!-- 문자열의 영문자가 모두 대문자로 바뀐 문자열을 반환 -->
		document.write(t.length, "<br/>");<!--문자열의 문자 총 개수를 반환한ㄷ. 이때 공백도 문자로 취급한다. -> 32-->
		
		var s=t.split("");<!-- 공백 문자를 기준으로 문자를 분리. 분리된 문자열은 배열에 저장되어 s에 할당한다-->
		
		document.write(s[0], "<br/>"); <!--s의 인덱스 0에 저장된 문자열을 출력한다 ->"Hello"-->
		document.write(s[4], "<br/>"); <!--s의 인덱스 4에 저장된 문자열을 출력한다 ->"luck"-->
		
		var str="A";
		var t=str.charCodeAt(0);<!--변수에 저장된 문자열 중 0번 인덱스의 문자 "A"의 아스키 코드값을 반환.-->
		
		document.write(t);<!--"A"의 아스키 코드 값 65를 출력-->
		document.write(String.fromCharCode(65),"<br/>")<!--코드값 65에 해당하는 문자를 반환-->
</script>

 

(참고 : do it 자바스크립트+제이쿼리 입문)

 

'Java Script' 카테고리의 다른 글

제어문  (0) 2020.05.19
연산자  (0) 2020.05.17
변수  (0) 2020.05.16
자바 스크립트 기초문법  (1) 2020.05.16
자바스크립트 간단한 실행문 예제  (1) 2020.05.16

REST API란

  API(Application Programming Interface)란

    데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환 가능하도록 하는 것.

  REST API의 정의

    REST 기반으로 서비스 API를 구현한 것.

    최근 OpenAPI, 마이크로서비스(하나의 큰 애플리케이션을 여러개의 작은 애플리케이션으로 쪼개어 변경과 조합이

    가능하도록 만든 아키텍쳐) 등을 제공하는 업체 대부분은 REST API를 제공한다.

 

REST API의 특징

  사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.

  REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.

  즉, REST API를 제작하면 델파이 클라이언트 뿐 아니라, 자바, C#, 웹 등을 이용해 클라이언트를 제작할 수 있다.

 

REST API 설계 기본 규칙

  참고 리소스 원형

    도큐먼트 : 객체 인스턴스나 데이터베이스 레코드와 유사한 개념.

    컬렉션 : 서버에서 관리하는 디렉터리라는 리소스

    스토어 : 클라이언트에서 관리하는 리소스 저장소

  1. URI는 정보의 자원을 표현해야 한다.

     i. resource는 동사보다는 명사를, 대문자보다는 소문자를 사용한다.

    ii. resource의 도큐먼트 이름으로는 단수 명사를 사용해야 한다.

   iii. resource의 컬렉션 이름으로는 복수 명사를 사용해야 한다.

   iv. resource의 스토어 이름으로는 복수 명사를 사용해야 한다.

        Ex) GET /Member/1  ->  GET /members/1

  2. 자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현한다.

    i. URI에 HTTP Method가 들어가면 안된다.

        Ex) GET /Members/delete/1  ->  DELETE /members/1

   ii. URI에 행위에 대한 동사 표현이 들어가면 안된다.(즉, CRUD 기능을 나타내는 것은 URI에 사용하지 않는다.)

        Ex) GET /members/show/1  ->  GET /memers/1

        Ex) GET /members/insert/2  -> POST /members/2

  iii. 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.(즉, id는 하나의 특정 resource를 나타내는 고유값이다.)

        Ex) student를 생성하는 route:POST/students

        Ex) id=12인 student를 삭제하는 route:DELETE/students/12

 

REST API 설계 규칙

  1. 슬래시 구분자(/)는 계층 관계를 나타내는데 사용한다.

      Ex) http://restapi.example.com/gouses/apartments 

  2. URI 마지막 문자로 / 를 포함하지 않는다.

      URI에 포함되는 몯느 글자는 리소스의 유일한 식별자로 사용되어야 하며 URI가 다르다는 것은 리소스가

      다르다는 것이고, 역으로 리소스가 다르면 URI도 달라져야 한다

      REST API는 분명한 URI를 만들어 통신을 해야하기 때문에 혼동을 주지 않도록 URI 경로의 마지막에는 

      / 를 사용하지 않는다.

      Ex) http://restapi.example.com/houses/apartments/ (X)

  3. 하이픈( - )은 URI 가독성을 높이는데 사용

     불가피하게 긴 URI 경로를 사용하게 된다면 하이픈을 사용해 가독성을 높인다.

  4. 밑줄( _ ) 은 URI에 사용하지 않는다.

     밑줄은 보기 어렵거나 밑줄 때문에 문자가 가려지기도 하므로 가독성을 위해 밑줄은 사용하지 않는다.

  5. URI 경로에는 소문자가 적합하다.

     URI 경로에 대문자 사용은 피하도록 한다.

     RFC 3986(URI 문법형식)은 URI 스키마와 호스트를 제외하고는 대소문자를 구별하도록 규정하기 때문이다.

  6. 파일확장자는 URI에 포함하지 않는다.

     REST API에서는 메시지 바디 내용의 포맷을 나타내기 위한 파일 확장자를 URI안에 포함시키지 않는다.

     Accept header를 사용한다.

     Ex) http://restapi.example.com/members/soccer/345/photo.jpg  (X)

     Ex) GET / members/soccer/345/photo HTTP/1.1 Host: restapi.example.com

          Accept : image/jpg (O)

  7. 리소스 간에는 연관 관계가 있는 경우

      /리소스명/리소스 ID/관계가 있는 다른 리소스명

      Ex) GET : /users/{userid}/devices(일반적으로 소유'has'의 관계를 표현할 때)

 

REST API 설계 예시

 

  참고 : 응답상태 코드

    1xx : 전송 프로토콜 수준의 정보 교환

    2xx : 클라이언트 요청이 성공적으로 수행됨

    3xx : 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야 함

    4xx : 클라이언트의 잘못된 요청

    5xx : 서버쪽 오류로 인한 상태코드

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

'JAVA' 카테고리의 다른 글

클래스(Class)와 인스턴스(Instance)  (0) 2021.01.26
객체지향프로그래밍(Object Oriented Programming, OOP)  (0) 2021.01.25
REST  (0) 2020.05.19
배열(Array)  (1) 2020.05.08
this, this(), super, super()  (1) 2020.05.08

+ Recent posts