jQuery HTML 태그에 값이나 html 설정해야 하는 경우, Html 태그 별로 각각 사용하는 함수가 다르다.

 

그러므로 개발을 진행하다고, 함수를 찾아보거나, html 값이 적재되지 않는 이유를 찾지 않아도 된다.

( 예를 들어 span 경우, val() 함수를 사용하고, 값이 들어갔지라는 의문을 가질 필요가 없다. )

 

따라서, 매번 Html 태그를 확인해서 함수를 사용하기 보다는 미리 html 값을 설정 있는

 

getter, setter 함수를 생성하고 사용하는 편이 나중을 생각해서도 편하다.



소스코드 예시

jQuery.fn.extend({

    setValue: function (value) {

      if ( $(this).is("input") || $(this).is('textarea') || $(this).is('select') ){

              $(this).val(value);

      }else{

              $(this).text(value);

      }

    },

    getValue : function(){

      if ( $(this).is("input") || $(this).is('textarea') || $(this).is('select') ){

              return $(this).val();

      }else{

              return $(this).text();

      }

    }

});


//사용법

$('#id').setValue('test');

console.log($('#id').getValue());


'프로그래밍 > jQuery' 카테고리의 다른 글

반복적 비동기 호출  (0) 2019.02.27
[jQuery] scrollTop 을 이용한 textarea focus  (0) 2012.08.22
[jQuery] each()  (0) 2012.05.10
[jQuery] attr()  (0) 2012.04.25
[jQuery] jQuery.each() vs .each()  (1) 2012.04.24



jQuery로 배열이나, Collection 정보를 순차적으로 Ajax 비동기를 호출해서 처리해야 하는 상황에서 

(예시 : 첫번째 Ajax 비동기 호출이 완료 될 때까지, 기다렸다가 두번째 Ajax 비동기 호출을 해야하는 경우 )


Ajax 비동기 호출을 기다리기 위해서 async, await, promise를 사용하여 문제 해결을 진행했다.



단, 소스 코드를 실행 전에 사용하고 있는 브라우저가 async, await, promise 를 지원하는지 확인이 필요하다.


크롬도 마찬가지로 버전이 낮을 경우, 해당 소스코드를 문법 오류로 인식한다.



- 소스는 참조용입니다.

eachAjaxCall();


async function eachAjaxCall(){

  var array = [1,2,3];

  for ( const element of array ){

  try{

    await promiseAjaxCall(element);

      console.log('element done');

    }catch(e){

    console.log('called by reject');

    }

  }

   console.log('process done'); 

}



async function promiseAjaxCall(element){

return new Promise(function(resolve,reject){

$.ajax({

                 url: 'URL 주소 작성',

                 type: 'POST',

data : element,

    }).done(function(data) {

    /**

              * 

      */

      console.log('ajax done' + data);

      console.log(element);

      resolve();

    }).fail(function() {

    reject();

  });

  });

}





'프로그래밍 > jQuery' 카테고리의 다른 글

jQuery로 Value getter(),setter() 만들기  (0) 2019.03.16
[jQuery] scrollTop 을 이용한 textarea focus  (0) 2012.08.22
[jQuery] each()  (0) 2012.05.10
[jQuery] attr()  (0) 2012.04.25
[jQuery] jQuery.each() vs .each()  (1) 2012.04.24



Textarea 태그에는 장문의 글을 넣을 수 있지만, 장문에 따라 생기는 스크롤로 인하여


페이지가 표시될 때, Textarea의 최하단에 focus가 될 수 있도록 하는 기능이 필요함.


$('textarea').scrollTop($('textarea')[0].scrollHeight);



'프로그래밍 > jQuery' 카테고리의 다른 글

jQuery로 Value getter(),setter() 만들기  (0) 2019.03.16
반복적 비동기 호출  (0) 2019.02.27
[jQuery] each()  (0) 2012.05.10
[jQuery] attr()  (0) 2012.04.25
[jQuery] jQuery.each() vs .each()  (1) 2012.04.24



여러 엘리먼트에 어떠한 작업 ( ex: css 변경 ) or 이벤트( ex: click )를 적용하려면, 


여러 엘리먼트에서 각각 엘리먼트에 대해 적용하여야 하나, jQuery에서는 .each()를 제공하고 있다.


먼저, 기본 문법은 아래와 같다.


.each( function(index, Element) )


function의 매개변수로 index와 Element가 있지만 하나만 생략해도 되고, 둘다 생략 가능하다.


.each( function(){} ) <- 이와 같은 일반적인 .each()의 형태가 되겠으나,


각각 엘리먼트를 제어하기 위해서는 function() 내부에서 $('this') 를 사용하면, 


현재 일치되는 엘리먼트에 대해서 제어할수 있게 된다.


$('p').each( function(){

     $('this').css('color','red')

});


위의 내용은 모든 p태그의 색상을 빨강으로 변경하게 된다.


$('this')를 활용하여 각각의 엘리먼트 중에서도 특정한 엘리먼트에 대해서도 제어를 진행할 수 있으므로,


다양하게 활용될 수 있다.


'프로그래밍 > jQuery' 카테고리의 다른 글

반복적 비동기 호출  (0) 2019.02.27
[jQuery] scrollTop 을 이용한 textarea focus  (0) 2012.08.22
[jQuery] attr()  (0) 2012.04.25
[jQuery] jQuery.each() vs .each()  (1) 2012.04.24
[jQuery] One()  (0) 2012.03.30



HTML Element에 대해서 추가적인 정보를 제공하는 것이 Attribute가 되겠다.


그리고 name/value 형식(pairs)으로 구성되어 추가적인 정보를 제공할 수 있게 되어있다.

( ex: name="MOON" )


Attribute에 담겨져 있는 추가적인 정보를 활용하게 위해서는 attr() 을 사용하면 보다 편리하게 


Attribute의 값을 제어 할 수 있게 된다.


먼저 문법을 살펴보자.


.attr( attributeName )

.attr( attributeName, value)


위와 같이 기본 문법이 있다.


1. .attr( attributeName )


이 경우는 셀럭터에 의해서 선택된 엘리먼트 안에 attributeName에 대한 value값을 리턴하여 사용하게 되는 경우이다.


$('input').attr( "name" )


위의 결과는 name이라는 attribute의 value값을 리턴 받게 될 것이다.



2. attr( attributeName, value )


이 경우는 셀럭테에 의해서 선택된 엘리먼트에 attributeName/value 형식(pairs)으로 를 설정(set)하는 경우 이다. 


$('input').attr( "id", "inputId" )


위의 결과는 input 엘리먼트에 id="inputId" 라는 atttirbute를 설정(set)하게 될 것이다.





'프로그래밍 > jQuery' 카테고리의 다른 글

[jQuery] scrollTop 을 이용한 textarea focus  (0) 2012.08.22
[jQuery] each()  (0) 2012.05.10
[jQuery] jQuery.each() vs .each()  (1) 2012.04.24
[jQuery] One()  (0) 2012.03.30
[jQuery] Live()  (0) 2012.03.26




jQuery.each() or $.each()는 자바스크립트 개체 및 배열을 통해서 Iterating에 대한 generic iterator function 이다.


.each()는 jQuery 객체를 통해 반복하여, 일치하는 Element에 대해 실행되는 함수를 가진 Iterator이다.


(이하 내용은 jQuery.each() or $.each()이지만 jQuery.each()로 통일하여 작성 하였습니다. )


위와 같이 jQuery.each()와 .each()이 차이가 있다는 것을 알 수 있다.


그렇다면 각각의 기본 문법을 살펴보자.


jQuery.each()( collection, callback( indexInArray, valueOfElement ) )


.each( function( index, Element ) )



문법을 살펴보게 되면 확연하게 차이가 있음을 보여준다.


jQuery.each()는 입력받은 collection에 대한 callback이 이루어지는 반면, 


.each()는 셀렉터( $(' ') )에 일치하는 엘리먼트에 대해 function이 동작하게 된다.


이제는 성능에 대해서 알아보기 되면, 결론은 jQuery.each() > .each() 이다.


그렇다고 매우 차이가 날 정도로 jQuery.each()가 빠른것이 아니라 약간의 나은 성능을 보여준다는 것이다.





'프로그래밍 > jQuery' 카테고리의 다른 글

[jQuery] each()  (0) 2012.05.10
[jQuery] attr()  (0) 2012.04.25
[jQuery] One()  (0) 2012.03.30
[jQuery] Live()  (0) 2012.03.26
[jQuery] Bind()  (0) 2012.03.21




jQuery에서 엘리먼트에이벤트 핸들러를 적용시키는 Bind()가 있고,


동적으로 생성되는 엘리먼트에 대해서 이벤트 핸들러를 적용시키는 Live()가 있습니다.


그렇다면 한번만 이벤트 핸들러가 딱 한번만 동작하도록 하는 함수는 One() 입니다.


One()의 사용방식은 Bind()와 동일합니다.

$("input").one( "click", function(){

alert ( $(this).val() );

});




'프로그래밍 > jQuery' 카테고리의 다른 글

[jQuery] each()  (0) 2012.05.10
[jQuery] attr()  (0) 2012.04.25
[jQuery] jQuery.each() vs .each()  (1) 2012.04.24
[jQuery] Live()  (0) 2012.03.26
[jQuery] Bind()  (0) 2012.03.21


웹페이지내에 엘리먼트에 대해서 이벤트를 핸들링할 경우에는 Bind()를 사용하면 된다.

하지만 동적으로 생성된 엘리먼트에 대해서 이벤트를 핸들링할 경우에는 Live()를 사용하면 된다.

기본적으로 Live()의 사용방식은 Bind()와 동일하다.

$("input").live( "click", function(){

alert ( $(this).val() );

});

 
위 이벤트는 동적으로 생성된 input에 대해서 이벤트 핸들링이 가능하는다는 점이 Bind()와 차이점이 되겠다.

Live()를 이벤트 핸들링을 제거할 경우 die()를 사용하면 핸들러를 제거할 수 있다. 


 

'프로그래밍 > jQuery' 카테고리의 다른 글

[jQuery] each()  (0) 2012.05.10
[jQuery] attr()  (0) 2012.04.25
[jQuery] jQuery.each() vs .each()  (1) 2012.04.24
[jQuery] One()  (0) 2012.03.30
[jQuery] Bind()  (0) 2012.03.21


jQuery를 사용하여 엘리먼트에 이벤트를 적용시켜려면 Bind() 함수를 활용하면 된다.

먼저, 간단한 예를 보면 아래와 같다.

$('input').bind( 'click' , function(event) {

              alert('Hello!!');
}); 


위 이벤트는 " 모든 input 엘리먼트에 click 이벤트 핸들러로 인라인 함수를 바인딩한다. " 라고 정의 한 것이다.

이러한 bind() 함수는 한 엘리먼트에 대해서 이벤트를 여러개 사용할 경우에도 활용할 수 있다.
(ex : 클릭시에는 팝업, 마우스오버는 백그라운드 색상변경 )

물론 자바스크립트를 활용하여 해당 이벤트를 계속적으로 작성할수 있지만,

jQuery의 bind()를 활용하면 보다, 쉽게 작성할 수 있다.


$('SELECTER').bind( {

            click : function(event) { click 이벤트 처리 },
            mouseover : function(event) { mouseover 이벤트 처리 }
});


위와 같이 여러 이벤트를 생성하지만 하나의 이벤트 처리를 하고 싶은 경우는 아래와 같이 사용하면 된다.


$('SELECTER').bind( { 'click  mouseover ' , function(event) {

              alert('Hello!!');

});

여기서 주의할점은 위와 같이 다중 이벤트를 선언할 경우, 공백으로 구분된다는 점이다. 



'프로그래밍 > jQuery' 카테고리의 다른 글

[jQuery] each()  (0) 2012.05.10
[jQuery] attr()  (0) 2012.04.25
[jQuery] jQuery.each() vs .each()  (1) 2012.04.24
[jQuery] One()  (0) 2012.03.30
[jQuery] Live()  (0) 2012.03.26