jquery JSON - stringify/

Posted by 단순대왕 jQuery : 2014. 8. 29. 15:47

JSON.stringify()

The JSON.stringify() method converts a value to JSON, 

optionally replacing values if a replacer function is specified, 

or optionally including only the specified properties if a replacer array is specified.

alert(JSON.stringify({

제품명: '요구르트 드링크',

내용량: '30ml',

영양성분: {

열량: '100kcal',

탄수화물: '14g',

당류: '10g'

}

}));

[출력]

{{제품명: '요구르트 드링크',내용량: '30ml',영양성분: {열량: '100kcal',탄수화물: '14g',당류: '10g'}}}

alert(JSON.stringify({

... ... ...

}

}, null, 2));

[출력] 

{{

제품명: '요구르트 드링크',

내용량: '30ml',

영양성분: {

열량: '100kcal',

탄수화물: '14g',

당류: '10g'

}

}}


'jQuery' 카테고리의 다른 글

jQuery API List - 확장 집합 관련/  (0) 2014.07.31
jQuery 다시 보기  (0) 2014.07.31
jQuery jqXHR 객체  (0) 2014.07.18
jQuery Ajax Sample  (0) 2014.07.17
jQuery Ajax 사용하기  (0) 2014.07.17
  

jQuery API List - 확장 집합 관련/

Posted by 단순대왕 jQuery : 2014. 7. 31. 14:37

1. 확장된 엘리먼트 관련

확장 집합의 크기 결정

size()


확장 집합에서 엘리먼트 획득하기

get(idx)

=> toArray()

eq(idx)

first()

last()

index(element)


확장 엘리먼트 집합 재편성

add(expression, context): 새로운 엘리먼트를 확장 집합에만 추가한다. 새로운 엘리먼트를 DOM에 

                                    추가하지 않는다. DOM에 엘리먼트를 추가하는 명령어는 append()를 사용한다.

not()

filter() 

-> $('td').filter(function(){return this.innerHTML.match(/^\d+$/)}); 숫자 값을 가진 모든 <td>

slice(): 확장집합의 엘리먼트를 반환하는 get()과는 다르게 새로운 확장 집합을 반환한다.

has()

map(): 확장 집합의 엘리먼트를 순회하면서 콜백 함수를 실행. 반환된 값을 모은다.

-> var allIDs = $('div').map(function(){ return (this.id == undefined) ? null : this.id; }).get();

each()

-> $('img').each(function(){ this.alt = 'image['+n+']의 id는 ' + this.id + ' 이다'; });


'jQuery' 카테고리의 다른 글

jquery JSON - stringify/  (0) 2014.08.29
jQuery 다시 보기  (0) 2014.07.31
jQuery jqXHR 객체  (0) 2014.07.18
jQuery Ajax Sample  (0) 2014.07.17
jQuery Ajax 사용하기  (0) 2014.07.17
  

jQuery 다시 보기

Posted by 단순대왕 jQuery : 2014. 7. 31. 11:07

- jQuery는 HTML 페이지의 엘리먼트를 조회한 다음 그 결과를 이용하여 사용자가 원하는 동작을

  수행하는 데 중점을 둔다.

- $() 함수는 jQuery() 함수의 별칭으로 셀렉터와 일치하고 문서에 정의된 순서를 따른

  DOM 엘리먼트 배열을 가진 '특별한' 자바스크립트 객체를 반환한다.


1. 셀렉터

- jQuery가 지원하는 기본 CSS 셀렉터

$("p:even"): 모든 짝수 번째 <p> 엘리먼트 선택

$("tr:nth-child(1)"): 모든 테이블에서 첫째 행을 선택

$("body >  div"): <body>의 바로 아래 자식인 <div> 엘리먼트 선택

$(a[href$='pdf']"): PDF 파일에대한 링크 선택

$(body > div:has(a)"): <body>의 바로 아래 자식이면서 링크를 포함하는 <div> 엘리먼트 선택


기본 CSS 셀렉터 사용하기

a: 모든 앵커<a> 엘리먼트와 일치

#specialID: specialID를 id로 가진 엘리먼트와 일치

.specialClass: specialClass를 클래스명으로 가진 모든 엘리먼트와 일치

a#specialID.specialClass: 앵커 태그에 spcialClass를 클래스명으로 가지면서 specialID를 id로 가진

                                      엘리먼트와 일치

p a.specialClass: <p> 엘리먼트의 자손들 중에 specialClass를 클래스명으로 가진 모든 앵커 

                          엘리먼트와 일치


자식 셀렉터, 컨테이너 셀렉터, 어트리뷰트 셀렉터 사용하기

*: 모든 엘리먼트와 일치

E: 태그명이 E인 모든 엘리먼트와 일치

E F: E의 자손이면서 태그명이 F인 모든 엘리먼트

E > F: E의 바로 아래 자식이면서 태그명이 F인 모든 엘리먼트와 일치

E + F: E의 형제 엘리먼트로 바로 다음에 나오는 엘리먼트 F와 일치

E ~ F: E의 형제 엘리먼트로 다음에 나오는 모든 엘리먼트 F와 일치

E.C: 클래스명 C를 가지는 모든 엘리먼트 E와 일치. E의 생략은 *.C와 동일

E#I: 아이디가 I인 엘리먼트 E와 일치. E의 생략은 *#I와 동일

E[A]: 어트리뷰트 A를 가지는 모든 엘리먼트 A와 일치

E[A=V]: 값이 V인 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치

E[A^=V]: 값이 V로 시작하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치

E[A$=V]: 값이 V로 끝나는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치

E[A!=V]: 값이 아예 없거나 값이 V가 아닌 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치

E[A*=V]: 값에 V를 포함하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치


위치로 선택하기

:first:  컨텍스트에서 처음 일치하는 엘리먼트와 일치

li a:first: 리스트 아이템의 자손 중 첫 번째 링크를 반환

:last: 컨텍스트에서 마지막으로 일치하는 엘리먼트와 일치

li a:last: 리스트 아이템의 자손 중 마지막 링크를 반환

:first-child: 컨텍스트에서 첫 번째 자식 엘리먼트와 일치

li:first-child: 각 리스트의 첫 번째 리스트 아이템을 반환

:last-child: 컨텍스트에서 마지막 자식 엘리먼트와 일치

li:last-child: 각 리스트의 마지막 리스트 아이템을 반환

:only-child: 형제가 없는 모든 엘리먼트를 반환

:nth-child(n): 컨텍스트에서 n번째 자식 엘리먼트와 일치

li:nth-child(2): 각 리스트의 두번째 리스트 아이템을 반환

:nth-child(even:odd): 컨텍스트에서 짝수 또는 홀수 자식 엘리먼트와 일치

li:nth-child(even): 각 리스트의 짝수 번째 리스트 아이템을 반환

:nth-child(Xn+Y): 전달된 공식에 따른 n번째 자식 엘리먼트와 일치

li:nth-child(3n): 3의 배수인 리스트 아이템을 반환

:even: 컨텍스트에서 짝수 번째 엘리먼트와 일치

li:even: 모든 짝수 번째 리스트 아이템 반환

:odd: 컨텍스트에서 홀수 번째 엘리먼트와 일치

li:odd: 모든 홀수 번째 리스트 아이템 반환

:eq(n): n 번째로 일치하는 엘리먼트와 일치

:gt(n): n 번째 엘리먼트를 포함하지 않은 이후의 엘리먼트와 일치

:lt(n): n 번째 엘리먼트를 포함하지 않은 이전의 엘리먼트와 일치


CSS와 jQuery 정의 필터 셀렉터

:animated: 현재 애니메이션이 적용되고 있는 엘리먼트를 선택

:button: 버튼 엘리먼트만 선택

:checkbox: 체크박스 엘리먼트만 선택

:checked: 선택된 체크박스 또는 라디오 버튼만 선택

:contains(food): 텍스트 food를 포함하는 엘리먼트만 선택

:disabled: 비활성화 상태인 엘리먼트만 선택

:enabled: 활성화 상태인 엘리먼트만 선택

:file: 파일 타입 엘리먼트만 선택

:has(selector): 셀렉터와 일치한 최소 한 개 이상의 엘리먼트를 포함하는 엘리먼트만 선택

:header: 헤더 엘리먼트만 선택

:hidden: 감춰진 엘리먼트만 선택

:image: 이미지 타입의 엘리먼트만 선택

:input: 폼 엘리먼트만 선택

:not(selector): 셀렉터의 값을 반대로 변경

:parent: 빈 엘리먼트를 제외하고, 텍스트도 포함해서 자식 엘리먼트를 가지는 엘리먼트를 선택

:password: 패스워드 엘리먼트만 선택

:radio: 라디오 엘리먼트만 선택

:reset: 리셋 버튼만 선택

:selected: 선택된 상태의 옵션 엘리먼트만 선택

:submit: 전송 버튼만 선택

:text: 텍스트 타입 엘리먼트만 선택

:visible: 보이는 엘리먼트만 선택


2. 확장 집합

관계를 이용한 확장집합 얻기

children([selector]): 확장 엘리먼트의 고유한 자식으로 구성된 확장 집합을 반환

closest([selector]): 존재할 경우, 전달된 표현식과 일치하는 가장 가까운 조상 하나로 구성된 확장 집합

contents(): 확장 집합에서 엘리먼트의 콘텐츠로 구성된 확장 집합을 반환

next([selector]): 확장 집합의 각 확장 엘리먼트 바로 다음에 나오는 형제로 구성된 확장 집합 반환

nextAll([selector]): 확장 집합의 각 확장 엘리먼트 다음에 나오는 모든 형제로 구성된 확장 집합 반환

nextUntil([selector]): 확장 집합의 각 확장 엘리먼트 다음에 나오는 모든 형제로부터 셀렉터와 일치하는 

                              엘리먼트 전까지의 확장 집합 반환

offsetParent(): 확장 집합에 상대 혹은 절대적으로 가장 가까운 위치한 첫 번째 엘리먼트의 부모로 구성된                        확장 집합 반환

parent([selector]): 확장 집합에 있는 모든 확장 엘리먼트의 바로 위 부모로 구성된 확장 집합 반화

parents([selector]): 모든 확장 엘리먼트의 조상으로 구성된 확장 집합 반환

parentsUntil([selector]): 확장 집합에 있는 엘리먼트의 모든 조상부터 셀렉터와 일치하는 엘리먼트

                                   전 까지의 확장 집합 반환

prev([selector]): 확장 집합의 각 확장 엘리먼트 바로 이전에 나오는 형제로 구성된 확장 집합 반환

prevAll([selector]): 확장 집합의 각 확장 엘리먼트 이전에 나오는 모든 형제로 구성된 확장 집합 반환

prevUntil([selector]): 확장 집합 내에 있는 엘리먼트의 모든 이전 형제부터 셀렉터와 일치하는

                               엘리먼트 전까지의 확장 집합 반환

siblings([selector]): 확장 엘리먼트의 모든 형제를 포함하는 확장 집합 반환


'jQuery' 카테고리의 다른 글

jquery JSON - stringify/  (0) 2014.08.29
jQuery API List - 확장 집합 관련/  (0) 2014.07.31
jQuery jqXHR 객체  (0) 2014.07.18
jQuery Ajax Sample  (0) 2014.07.17
jQuery Ajax 사용하기  (0) 2014.07.17
  

jQuery jqXHR 객체

Posted by 단순대왕 jQuery : 2014. 7. 18. 11:29

--- jQuery 1.5 내용 참조 ---

jqXHR 객체는 jQuery 1.5부터 $.ajax()함수가 반환하는 객체이며, XMLHttpRequest 객체의 상위집합이다.

XMLHttpRequest을 사용하는 모든 코드에서 하위호환성을 위해 jqXHR 객체를 동일하게 사용할 수 있다.

JSONP처럼 XMLHttpRequest가 아닌 다른 전송 방식을 사용하는 경우에도 XMLHttpRequest와 동일한

프로퍼티와 메소드를 지원하며, overrideMimeType() 메소드도 사용할 수 있다.

onreadychange 콜백을 지원하지 않는다.

jqXHR 객체가 제공하는 메소드를 사용하여 한 개 이상의 콜백 함수를 설정할 수 있다.

예)

var jqxhr = $.ajax({url: "example.php"})

.success(function(){ ; })

.error(function(){ ; })

.complete(function(){ ; });  // 필요한 작업 수행

jqxhr.complet(function(){ // other complete callback });  // 다른 완료 콜백 함수 설정

$.ajax() 함수의 반환값인 jqXHR 객체의 success(), error(), complete() 메소드를 사용하여 콜백 함수를

설정했다.


'jQuery' 카테고리의 다른 글

jQuery API List - 확장 집합 관련/  (0) 2014.07.31
jQuery 다시 보기  (0) 2014.07.31
jQuery Ajax Sample  (0) 2014.07.17
jQuery Ajax 사용하기  (0) 2014.07.17
jQuery API - triggerHandler/ toggle/ proxy/ delegate/  (0) 2014.07.16
  

jQuery Ajax Sample

Posted by 단순대왕 jQuery : 2014. 7. 17. 11:59

모터 사이클 부츠 온라인 판매 사이트 - 출처: jQuery in Action;인사이트 -

[1단계]

$(function(){

// 부츠의 style을 옵션으로 로딩...

$('#bootChooserControl').load(/action/fetchBootStyleOptions');

// 부츠의 style을 선택하면 상세정보 출력

$('#bootChooserControl').change(function(event){

$('#productDetailPane').load(

'action/fetchProductDetails',        // URL

{style:$(event.target).val()},        // Parameter

function(){ $('[value=""]', event.target).remove(); }    // callback

// context > event.target 에서 value=''인 엘리먼트 삭제

);

});

});

load() 대신 $.get() 사용하기

$('#bootChooserControl').change(function(event){

$.get(

'action/fetchProductDetails',

{style:$(event.target).val()},

function(response){ 

$('#productDetailPane').html(response);

$('[value=""]', event.target).remove(); 

}

);

});

[2단계]

$(function() {

$('#bootChooserControl').load('/html5_ex/bootcloset/actions/fetchBootStyleOptions.php');

$('#bootChooserControl').change(function(event){

$('#productDetailPane').load(

'/html5_ex/bootcloset/actions/fetchProductDetails.php',

$(this).serialize()

);

$('#colorChooserControl').load(

'/html5_ex/bootcloset/actions/fetchColorOptions.php',

$(this).serialize(),

function(){

$(this).attr('disabled',false);

$('#sizeChooserControl').attr('disabled',true).html("");

}

);

});

$('#colorChooserControl').change(function(event){

$('#sizeChooserControl').load(

'/html5_ex/bootcloset/actions/fetchSizeOptions.php',

$('#bootChooserControl, #colorChooserControl').serialize(),

function(){

$(this).attr('disabled',false);

}

);

});

$('#selectionsPane').change(function(event){

$('[value=""]',event.target).remove();

});

});

[3단계] 

phase.4a.html

$(function() {

$('#bootChooserControl').load('/html5_ex/bootcloset/actions/fetchBootStyleOptions.php');

$('#bootChooserControl').change(function(event){

$('#productDetailPane').load(

'/html5_ex/bootcloset/actions/fetchProductDetails.php',

$('#bootChooserControl').serialize(),

function(){ $('abbr').termifier('/html5_ex/bootcloset/actions/fetchTerm.php'); }

// load 된 html에 포함된 <tag>에 사용 - callback 함수

);

$('#colorChooserControl').load(

'/html5_ex/bootcloset/actions/fetchColorOptions.php',

$('#bootChooserControl').serialize(),

function(){

$('#colorChooserControl').attr('disabled',false);

$('#sizeChooserControl')

.attr('disabled',true)

.find('option').remove();

}

);

});

$('#colorChooserControl').change(function(event){

$('#sizeChooserControl').load(

'/html5_ex/bootcloset/actions/fetchSizeOptions.php',

$('#bootChooserControl,#colorChooserControl').serialize(),

function(){ $('#sizeChooserControl').attr('disabled',false); }

);

});

$('#selectionsPane').change(function(event){

$('[value=""]',event.target).remove();

});

$('body').ajaxComplete(function(event, xhr, options){

//options: $.ajax(options)의 options

// #productDetailPane 이 load 되면

if (options.url.indexOf('fetchProductDetails') != -1) {

$('div.termifier').remove();

}

});

});

[jquery.termifier.js]

jquery.jqia.termifier.js

(function($){

$.fn.termifier = function(actionURL, options) {

var settings = $.extend({

origin: {top:0, left:0},

paramName: 'term',

addClass: null,

actionURL: actionURL

},options||{});

     this.click(function(event){

$('div.termifier').remove();

$('<div>')

.addClass('termifier' + (settings.addClass ? (' ') + settings.addClass : ''))

.css({

position: 'absolute',

top: event.pageY - settings.origin.top,

left: event.pageX - settings.origin.left,

display: 'none'

})

.click(function(event){

$(this).fadeOut('slow');

})

.appendTo('body')

.append(

$('<div>').load(

settings.actionURL,

encodeURIComponent(settings.paramName) + '=' + encodeURIComponent($(event.target).text()),

function(){ $(this).closest('.termifier').fadeIn('slow'); }

)

);

});    

this.addClass('termified');

return this;

};

})(jQuery);


'jQuery' 카테고리의 다른 글

jQuery 다시 보기  (0) 2014.07.31
jQuery jqXHR 객체  (0) 2014.07.18
jQuery Ajax 사용하기  (0) 2014.07.17
jQuery API - triggerHandler/ toggle/ proxy/ delegate/  (0) 2014.07.16
jQuery 확장 메소드 만들기  (0) 2014.07.16
  

jQuery Ajax 사용하기

Posted by 단순대왕 jQuery : 2014. 7. 17. 10:48

load(url, parameters, callback)

- URL과 선택적인 요청 매개변수로 Ajax 요청을 전송한다. 콜백 함수는 요청이 완료되면 호출되며,

DOM이 수정된다.

- 응답으로 반환된 엘리먼트를 필터링할 때도 있다. 그럴 때는 요청 URL에 셀렉터를 추가한다.

요청 URL은 접미사로 공백과 셀렉터를 붙여서 확장 엘리먼트에 삽입되는 응답 엘리먼트를 제한할 수 있다.

- $(.injectMe').load('/someResource div'); // 응답 엘리먼트에서 <div>엘리먼트만 삽입한다.


serialize()

- form 엘리먼크나 폼 안의 form 엘리먼트에서 구성되고 인코딩된 쿼리 문자열을 생성한다.


serializeArray()

- form 컨트롤의 값을 컨트롤의 이름과 값을 포함하는 배열로 수집하여 반환한다.


$.get(url, parameters, callback, type)

- 매개변수로 명시된 URL을 사용하여 서버에 대한 GET 요청을 전송한다.

- type: 응답 본문의 해석방법 명시. html, text, xml, json, script, jsonp

xml을 전달하고 서버에서 XML을 반환할 때 콜백 함수로 전달된 데이터는 XML DOM으로 파싱된다.


$.getJSON(url, parameters, callback)

- 매개변수로 명시된 URL을 사용하여 서버에 대한 GET 요청을 전송한다.


$.post(url, parameters, callback, type)

- 매개변수로 명시된 URL을 사용하여 서버에 대한 POST 요청을 전송한다.


$.ajax(options)

- 요청의 생성 방법과 통보 받은 콜백을 제어하고자 전달된 options을 사용하여 Ajax 요청을 전송한다.

- context: 요청과 관련한 모든 콜백 함수의 컨텍스트로 설정될 엘리먼트 명시

- contentType: 요청에 명시되는 콘텐츠 타입 (application/x-www-form-urlencoded)

(* Ajax로 파일 전송도 가능 -?- )

- success: 응답이 성공 상태 코드를 반환하면 호출되는 함수

- error: 응답이 에러 코드를 반환하면 호출되는 함수

- complete: 요청이 완료되면 호출되는 함수

- beforeSend: 요청이 전송되기에 앞서 먼저 호출되는 함수

- async: false이면 요청이 동기 호출로 전송

- dataFilter: 응답을 필터링하려고 호출되는 콜백 함수


$.ajaxSetup(options)

- 전달된 프로퍼티 집합을 이어지는 $.ajax() 호출의 기본 옵션 값으로 할당한다.


Ajax 이벤트

jQuery에서 Ajax 요청이 실행되는 동안 일련의 커스텀 이벤트 발생하는데, 요청의 진행에 따른 알림을

받거나 다양한 시점에 원하는 처리를 할 목적으로 이벤트 핸들러를 할당할 수 있다.

- 지역 이벤트: beforSend, success, error, complete

- 전역 이벤트: ajaxStart, ajaxSuccess, ajaxError, ajaxStop, ajaxComplete

지역 이벤트는 $.ajax()나 다른 관련 함수에 전달된 콜백함수를 의미한다.

전역 이벤트는 발생하거나 핸들러를 할당하여 처리할 수 있는 커스텀 이벤트이다.


ajaxComplete(callback)

ajaxError(callback)

ajaxSend(callback)

ajaxStart(callback)

ajaxStop(callback)

ajaxSuccess(callback)

- 전달된 콜백 함수를 메소드명이 의미하는 jQuery Ajax 이벤트 핸들러로 할당한다.

예)

$('body').bind(

'ajaxStart ajaxStop ajaxSend ajaxSuccess ajaxError ajaxComplete',

function(event){ alert(event.type)}

);


ajax 확장

- Prefilters: 사용자 정의 옵션을 처리하거나 조재하는 옵션을 변경하는 일반화된 beforeSend 콜백 함수

각 요청이 보내기지 전에 그리고 $.ajax()함수가 옵션을 처리하기 전에 호출되는 콜백 함수

$.ajaxPrefilter() 함수를 사용하여 등록할 수 있다.


$.ajaxPrefilter(dataTypes, handler)

각 요청이 보내지기 전과 $.ajax() 함수가 처리하기 전에 사용자 정의 Ajax 옵션을 처리하거나 

존재하는 옵션을 수정한다.

예)

$.ajaxPrefilter( function(options){

if(options.crossDomain){

options.url = "http://mydomain.net/proxy/" + encodeURIComponent(options.url);

options.crossDomain = false;

}

});



- Converters: 예상한 dataType과는 다른 특정 dataType에 대한 응답을 처리하려고 호출되는 일반화된

dataFilter 콜백함수

예)

$.ajaxSetup({

converts: {

"type mydatatype" : function(textvalue){

if(valid(textvalue)){

return mydatatypevalue;

else{

// 에러 처리

}

}

}

});


- Trandports: $.ajax() 함수가 요청을 보낼 때 내부적으로 사용되는 객체

예)
사용자 정의  dataType인 image일 때를 처리하는 Transport를 생성하여 반환하는 함수

$.ajaxTransport("image", function(s){

if(s.type == "GET" && s.async){

var image;

return {

send: function( _ , callback){

image = new Image();

function done(statue){

if(image){

var statusText = (status == 200) ? "success" : "error",

tmp = image;

image = image.onreadystatechange = image.onerror = image.onload = null;

callback(status, statusText, {image:tmp});

}

}

image.onreadystatechange = image.onload = function(){

done(200);

}

image.error = function(){

done(404);

}

image.src = s.url;

},

abort: function(){

if(image){

image = image.onreadystatechange = image.onerror = image.onload = null;

}

}

},

}

});

'jQuery' 카테고리의 다른 글

jQuery jqXHR 객체  (0) 2014.07.18
jQuery Ajax Sample  (0) 2014.07.17
jQuery API - triggerHandler/ toggle/ proxy/ delegate/  (0) 2014.07.16
jQuery 확장 메소드 만들기  (0) 2014.07.16
jQuery Deprecated API  (0) 2014.07.15
  

jQuery API - triggerHandler/ toggle/ proxy/ delegate/

Posted by 단순대왕 jQuery : 2014. 7. 16. 16:38

.triggerHandler()

.triggerHandler( eventType [, extraParameters ] ) Returns: Object

Description: Execute all handlers attached to an element for an event.

The .triggerHandler() method behaves similarly to .trigger(), with the following exceptions: [더보기]


.toggle()

.toggle( [duration ] [, complete ] ) Returns: jQuery

Description: Display or hide the matched elements.


다른 예제] 클릭할 때마다 두 개의 다른 리스너를 바꿔가며 호출

$('#test').toggle(

function(event){ alert("on"); },

function(event){  alert("off"); }

);


$.proxy()

Description: Takes a function and returns a new one that will always have a particular context.

jQuery.proxy( function, context ) Returns: Function

jQuery.proxy( context, function_name ) Returns: Function


.delegate()

.delegate( selector, eventType, handler ) Returns: jQuery

.delegate( selector, eventType, eventData, handler )

Description: Attach a handler to one or more events for all elements that match the selector, 

now or in the future, based on a specific set of root elements.


.delegate() has been superseded by the .on() method. For earlier versions, 

however, it remains the most effective means to use event delegation. 

More information on event binding and delegation is in the .on() method. 

예)

$( "table" ).delegate( "td", "click", function() {

$( this ).toggleClass( "chosen" );

});

is equivalent to the following code written using .on():

$( "table" ).on( "click", "td", function() {

$( this ).toggleClass( "chosen" );

});

'jQuery' 카테고리의 다른 글

jQuery Ajax Sample  (0) 2014.07.17
jQuery Ajax 사용하기  (0) 2014.07.17
jQuery 확장 메소드 만들기  (0) 2014.07.16
jQuery Deprecated API  (0) 2014.07.15
jQuery 사용자 정의 함수 만들기  (0) 2014.07.15
  

jQuery 확장 메소드 만들기

Posted by 단순대왕 jQuery : 2014. 7. 16. 11:52

DOM 엘리먼트를 조작하는 확장 메소드를 추가할 수 있다. 확장 메소드로 추가하면 jQuery 셀렉터의 

기능을 사용할 수 있다. 

확장 메소드는 $ 네임스페이스의 fn이라는 이름을 가진 객체의 프로퍼티를 할당한다.


확장 함수 형식

$.fn.wrapperFunctionName = function(params){

// function body

};


확장 함수 예제

(function($){

$.fn.makeItBlue = function(){

return this.css('color', 'blue');

}

})(jQuery);

메소드 본문에서 함수 컨텍스트인 this는 확장 집합을 나타낸다.

함수 컨텍스트를 통해 미리 정의된 jQuery 메소드를 사용할 수 있다.

함수에 특정한 값을 반환할 의도가 없다면 반환 값으로 항상 확장 집합을 돌려줘야 한다.

(function($){

$.fn.someNewMethod = function(){

return this.each(function(){

$(this).css('color', $(this).is('[id]') ? 'blue' : 'red');

});

}

})(jQuery);


값으로 함수를 전달하면 확장 집합의 엘리먼트를 순회하며 함수를 호출한다.

(function($){

$.fn.someNewMethod = function(){

return this.css('color', function(){

return $(this).is('[id]') ? 'blue' : 'red';

});

}

})(jQuery);


확장 함수 사용

--- JS ---

(function($){

$.fn.setReadyOnly = function(readonly){

return this.filter('input:text')

.attr('readOnly', readonly)

.css('opacity', readonly ? 0.5 : 1.0)

.end();

};

})(jQuery);


--- HTML ---

$(function(){

$('#sameAddressControl').click(function(){

var same = this.checked;

$('#billingAddress input').setReadyOnly(same);

});

});


이미지 슬라이드 테스트 

jquery.jqia.photomatic.js



'jQuery' 카테고리의 다른 글

jQuery Ajax 사용하기  (0) 2014.07.17
jQuery API - triggerHandler/ toggle/ proxy/ delegate/  (0) 2014.07.16
jQuery Deprecated API  (0) 2014.07.15
jQuery 사용자 정의 함수 만들기  (0) 2014.07.15
jQuery 확장  (0) 2014.07.15
  

jQuery Deprecated API

Posted by 단순대왕 jQuery : 2014. 7. 15. 17:41

Category: Deprecated 1.3

jQuery.boxModel

States if the current page, in the user’s browser, is being rendered using the W3C CSS Box Model. This property was removed in jQuery 1.8. Please try to use feature detection instead.


jQuery.browser

Contains flags for the useragent, read from navigator.userAgent. This property was removed in jQuery 1.9 and is available only through the jQuery.migrate plugin. Please try to use feature detection instead.


Category: Deprecated 1.7

deferred.isRejected()

Determine whether a Deferred object has been rejected.


deferred.isResolved()

Determine whether a Deferred object has been resolved.


.die()

Remove event handlers previously attached using .live() from the elements.

=> use of .die() (and its complementary method, .live()) is not recommended. 

Instead, 

=> use .off() to remove event handlers bound with .on()


jQuery.sub()

Creates a new copy of jQuery whose properties and methods can be modified without affecting the original jQuery object.


.live()

Attach an event handler for all elements which match the current selector, now and in the future.

=> Use .on() to attach event handlers.

$( selector ).live( events, data, handler );        // jQuery 1.3+

$( document ).delegate( selector, events, data, handler );      // jQuery 1.4.3+

$( document ).on( events, selector, data, handler );              // jQuery 1.7+


.selector

A selector representing selector passed to jQuery(), if any, when creating the original set.


Category: Deprecated 1.8

.andSelf() 

Add the previous set of elements on the stack to the current set.


deferred.pipe()

Utility method to filter and/or chain Deferreds.


.error()

Bind an event handler to the “error” JavaScript event.


.load()

Bind an event handler to the “load” JavaScript event.


.size()

Return the number of elements in the jQuery object.


.toggle()

Bind two or more handlers to the matched elements, to be executed on alternate clicks.


.unload()

Bind an event handler to the “unload” JavaScript event.


Category: Deprecated 1.10

 .context

The DOM node context originally passed to jQuery(); if none was passed then context will likely be the document.


'jQuery' 카테고리의 다른 글

jQuery API - triggerHandler/ toggle/ proxy/ delegate/  (0) 2014.07.16
jQuery 확장 메소드 만들기  (0) 2014.07.16
jQuery 사용자 정의 함수 만들기  (0) 2014.07.15
jQuery 확장  (0) 2014.07.15
jQuery Utility API  (0) 2014.07.15
  

jQuery 사용자 정의 함수 만들기

Posted by 단순대왕 jQuery : 2014. 7. 15. 14:47

$의 jQuery 참조 보장

(function($){

$.say = function(what){ alert('I say ' + what); }

})(jQuery)


데이터를 처리하는 유틸리티 함수

$.toFixedWidth(value, length, fill) 

jquery.data-1.0.js


- 전달된 값(value)을 지정한 길이(length)의 고정폭 필드 형식으로 변경

- 선택값으로 채움 문자 지정

(function($){

$.toFixedWidth = function(value, length, fill){

var result = (value || '').toString();

fill = fill || '0';

var padding = length - result.length;

if(padding < 0){

result = result.substr(- padding);

}

else{

for(var n=0; n<padding; n++){

result = fill + result;

}

}

return result;

};

})(jQuery)


날짜 형식기 만들기

$.formatDate(date, pattern)

jquery.date-1.0.js


- 전달된 날짜를 제공된 패턴에 맞추어 형식화한다.

(function($){

$.formatDate = function(date, pattern){

var result = [];

while(pattern.length > 0){

$.formatDate.patternParts.lastIndex = 0;

var matched = $.formatDate.patternParts.exec(pattern);

if(matched){

result.push($.formatDate.patternValue[matched[0]].call(this, date));

pattern = pattern.slice(matched[0].length);

}

else{

result.push(pattern.charAt(0));

pattern = pattern.slice(1);

}

}

return result.join('');

}


$.formatDate.patternParts = /^(yy(yy)?|M(M(M(M)?)?)?|d(d)?|EEE(E)?|a|H(H)?|h(h)?|m(m)?|s(s)?|S)/;


$.formatDate.monthNames = [

'January','February','March','April','May','June',

'July','August','September','October','November','December'

];

$.formatDate.dayNames = [

'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'

];


$.formatDate.patternValue = {

yy: function(date){

return $.toFixedWidth(date.getFullYear(), 2);

},

yyyy: function(date){

return date.getFullYear().toString();

},

MMMM: function(date){

return $.formatDate.monthNames[date.getMonth()];

},

MMM: function(date){

return $.formatDate.monthNames[date.getMonth()].substr(0,3);

},

MM: function(date){

return $.toFixedWidth(date.getMonth()+1, 2);

},

M: function(date){

return date.getMonth()+1;

},

dd: function(date){

return $.toFixedWidth(date.getDate(), 2);

},

d: function(date){

return date.getDate();

},

EEEE: function(date){

return $.formatDate.dayNames[date.getDay()];

},

EEE: function(date){

return $.formatDate.dayNames[date.getDay()].substr(0, 3);

},

HH: function(date){

return $.toFixedWidth(date.getHours(), 2);

},

H: function(date){

return date.getHours();

},

hh: function(date){

var hours = date.getHours();

return $.toFixedWidth(hours > 12 ? hours - 12 : hours, 2);

},

h:function(date){

return date.getHours() % 12;

},

mm: function(date){

return $.toFixedWidth(date.getMinutes(), 2);

},

m: function(date){

date.getMinutes();

},

ss: function(date){

return $.toFixedWidth(date.getSeconds(), 2);

},

s: function(date){

return date.getSeconds();

},

S: function(date){

return $.toFixedWidth(date.getMilliseconds(), 3);

},

a: function(date){

return date.getHours < 12 ? 'AM' : 'PM';

}

}

})(jQuery)


'jQuery' 카테고리의 다른 글

jQuery 확장 메소드 만들기  (0) 2014.07.16
jQuery Deprecated API  (0) 2014.07.15
jQuery 확장  (0) 2014.07.15
jQuery Utility API  (0) 2014.07.15
jQuery 새로운 기술이 아니라 새로운 생각  (0) 2014.07.14
  
 «이전 1 2  다음»