본문 바로가기
Javascript , JQuery

Jquery : api

by autumnly 2017. 7. 11.

 

.addClass()

 

Jquery 1.4 부터, addClass() 메소드의 파라미터로 함수를 입력할 수 있다.

$( "ul li" ).addClass(function( index ) {
  return "item-" + index;
});
 

 

두 개의 li 요소가 있다면, 첫번째 요소는 "item-0", 두번째 요소는 "item-1" 클래스가 된다.

 

 

예시

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>addClass demo</title>
  <style>
  div {
    background: white;
  }
  .red {
    background: red;
  }
  .red.green {
    background: green;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

 <div>This div should be white</div>
 <div class="red">This div will be green because it now has the "green" and "red" classes.
   It would be red if the addClass function failed.</div>
 <div>This div should be white</div>
 <p>There are zero green divs</p>

<script>
$( "div" ).addClass(function( index, currentClass ) {
  var addedClass;

  if ( currentClass === "red" ) {
    addedClass = "green";
    $( "p" ).text( "There is one green div" );
  }

  return addedClass;
});
</script>

</body>
</html>

 

 

 

.after()

 

.insertAfter() 메소드와 기능은 같으나 파라미터의 순서를 다르게 쓴다.

$(target).after(contentToBeInserted)

$(contentToBeInserted).insertAfter(target)

 

다음과 같이 DOM 엘리먼트를 인자로 사용할 수도 있다.

 
$( ".container" ).after( $( "h2" ) );
또한 이렇게 타겟이 하나인 경우 $("h2") 는 복사되는 것이 아니라 옮겨지게 된다.
(타겟이 여러개인 경우는 복사된다)
 
 

.animate()

step 옵션.
애니메이션이 일어나는 중간에 다른 일을 추가할 때 사용한다.
 
$( "li" ).animate({
  opacity: .5,
  height: "50%"
}, {
  step: function( now, fx ) {
    var data = fx.elem.id + " " + fx.prop + ": " + now;
    $( "body" ).append( "<div>" + data + "</div>" );
  }
});
 
인자로는 now, fx가 있고 이름은 상관없지만 순서는 지켜져야 한다.
다음은 fx 인자의 옵션값들이다.
 
The object
Attribute Type Description
easing String 현재 애니메이션의 easing 설정값을 보여 준다.
elem DOM Element 현재 애니메이션의 대상요소. (jQuery 랩핑되지 않은 순수 DOM 요소)
end Number 애니메이션이 종료되는 시점의 값.
now Number 애니메이션이 재생 되는 동안의 현재의 값.
options Object 설정 한 옵션을 보여 준다.
단순히 처음 설정값에 대한 정보일 뿐이므로, 특정 조건을 주어 옵션을 변경하는 것은 불가능 하다.
예를 들어 if(now == 500) fx.options.easing = "swing" 하더라도 현재 애니메이션의 easing은 변하지 않음.
    complete, duration, easing, queue, specialEasing, step등의 하위 속성을 가진다.
fx.options.duration 이라고 하면 애니메이션 재생시에 옵션으로 설정했던 duration 값을 가지고 온다.
pos Number 가속시 사용되는 속도를 표시해 준다. 0~1 사이의 값이 나온다.
즉 처음부터 끝까지 갈 동안을 나누어 놓은 비율이 표시된다고 생각하면 된다.
prop String 현재 재생되는 css의 속성값을 보여준다. top 혹은 left 등.
start Number 애니메이션의 시작값을 보여준다.
unit String 애니메이션 재생의 단위를 보여준다. 예를들어 px, em 등이다.
 
 
 
queue 옵션
다음과 같이 queue옵션에 false를 주면
애니메이션이 순차적으로 실행되지 않고 동시에 실행된다.
 
$( "#go1" ).click(function() {
  $( "#block1" )
    .animate({
      width: "90%"
    }, {
      queue: false,
      duration: 3000
    })
    .animate({ fontSize: "24px" }, 1500 )
    .animate({ borderRightWidth: "15px" }, 1500 );
});
위 경우, width가 90% 커짐과 동시에 폰트사이즈가 24px로 변한다.
이 애니메이션이 끝난 뒤 border 애니메이션이 시작된다.
 
 

.find()

해당 엘리먼트의 자식 엘리먼트중 일치하는 것을 찾음.
 
예시.
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>find demo</title>
  <style>
  p {
    font-size: 20px;
    width: 200px;
    color: blue;
    font-weight: bold;
    margin: 0 10px;
  }
  .hilite {
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

<p>
  When the day is short
  find that which matters to you
  or stop believing
</p>

<script>
var newText = $( "p" ).text().split( " " ).join( "</span> <span>" );
newText = "<span>" + newText + "</span>";

$( "p" )
  .html( newText )
  .find( "span" )
    .hover(function() {
      $( this ).addClass( "hilite" );
    }, function() {
      $( this ).removeClass( "hilite" );
    })
  .end()
  .find( ":contains('t')" )
    .css({
      "font-style": "italic",
      "font-weight": "bolder"
    });
</script>

</body>
</html>
 
 

 

 
 

.on()

엘리먼트에 이벤트 핸들러를 붙여주는 메소드.
.bind() 메소드와 같은 기능을 하나, .on() 의 사용이 권장된다.
 
다음과 같이 데이터를 전달해줄 수도 있다.
 
function greet( event ) {
  alert( "Hello " + event.data.name );
}
$( "button" ).on( "click", { name: "Karl" }, greet );
$( "button" ).on( "click", { name: "Addy" }, greet );
 
위 경우엔 두 번의 alert창이 뜨게된다.
 
 
다음과 같은 경우엔 이벤트 버블링이 tr부터 tbody 까지만 올라가게 된다.
$( "#dataTable tbody" ).on( "click", "tr", function() {
  console.log( $( this ).text() );
});
 

 

 
 

 

 
 
 

'Javascript , JQuery' 카테고리의 다른 글

Jquery : Ajax로 아이디 중복체크 하기  (2) 2017.07.10