원문 링크 http://api.jquery.com/trigger/
개요 : 특정 이벤트 유형에 대해 선택된 요소에 연결된 모든 핸들러와 동작(behavior)을 실행합니다.
- .trigger( eventType [, extraParameters] )
- eventType JavaScript 이벤트 타입을 표현하는 문자열, click 또는 submit 같은.
- extraParameters 이벤트 핸들러에 전달할 추가 파라미터.
- .trigger( event )
- event jQuery.Event 객체.
.trigger()
함수는 이벤트가 발생할 때 실행될 함수나 .bind()
함수로 연결된 어떤 이벤트 핸들러를 강제로 실행시켜 줍니다. A call to .trigger()
함수를 사용해서 사용자가 일으킬 이벤트를 임의적으로 순서에 따라 발생시킬 수 있습니다.
$('#foo').bind('click', function() { alert($(this).text()); }); $('#foo').trigger('click');
jQuery 1.3에 와서, .trigger()
함수는 DOM 구조에 따라 버블링을 지원하게 되었습니다. 버블링을 멈추고 싶을때는 핸들러에서 false
를 리턴하거나 .stopPropagation()
함수를 사용하면 됩니다.
우리가 사용자 정의 이벤트를 정의해서 .bind()
함수에서 사용할 때, 두번째 인자로 .trigger()
를 사용하면 유용합니다. 예를 들어, 위 예제에 있는 click
이벤트 대신에 custom
이벤트를 사용한다고 가정해 봅시다.
$('#foo').bind('custom', function(event, param1, param2) { alert(param1 + "\n" + param2); }); $('#foo').trigger('custom', ['Custom', 'Event']);
이 이벤트는 첫번째 인자로 항상 이벤트 핸들러를 넘겨야 합니다. 만약 .trigger()
호출 시 추가적인 인자를 전달해도 이벤트 핸들러에 잘 전달이 됩니다. 하나 이상의 매개변수를 넘기려면, 예제처럼 배열형태를 사용합니다. jQuery 1.6.2에 와서, 배열의 사용없이 단수 매개변수를 사용할 수 있게 되었습니다.
Note: For both 일반적인 객체나 DOM 객체를 사용할 때 그 객체의 속성명이 이벤트 명과 일치하는 경우가 발생하면, jQuery는event.preventDefault()
를 호출하여 이벤트 핸들러를 중지시킵니다. 만약 이런 일이 발생되는 것을 원하지 않으시면,.triggerHandler()
를 사용하시기 바랍니다.
내용이 좀 어렵네요. 많이 삭제하면 작성했습니다. 저도 잘 모르는게 젤 문제 ㅜㅜ
예 제
버튼 #2 를 누르면 버튼 #1의 이벤트도 실행시킵니다.
<!DOCTYPE html> <html> <head> <style> button { margin:10px; } div { color:blue; font-weight:bold; } span { color:red; } </style> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <button>Button #1</button> <button>Button #2</button> <div><span>0</span> button #1 clicks.</div> <div><span>0</span> button #2 clicks.</div> <script> $("button:first").click(function () { update($("span:first")); }); $("button:last").click(function () { $("button:first").trigger('click'); update($("span:last")); }); function update(j) { var n = parseInt(j.text(), 10); j.text(n + 1); } </script> </body> </html>
미리보기
1번 버튼과 2번 버튼 클릭의 차이를 숫자 증가로 보시면 되겠습니다.
예 제
submit() 함수 사용안하고 첫번째 폼 전송하기:
$("form:first").trigger("submit")
예 제
submit() 함수 사용안하고 첫번째 폼 전송하기:
var event = jQuery.Event("submit"); $("form:first").trigger(event); if ( event.isDefaultPrevented() ) { // Perform an action... }
예 제
이벤트에 임의의 데이터 전달하기:
$("p").click( function (event, a, b) { // when a normal click fires, a and b are undefined // for a trigger like below a refers to "foo" and b refers to "bar" } ).trigger("click", ["foo", "bar"]);
예 제
이벤트 객체를 이용하여 임의의 데이터 전달하기
var event = jQuery.Event("logged"); event.user = "foo"; event.pass = "bar"; $("body").trigger(event);
예 제
이벤트 개체를 통해 데이터를 전달하는 다른 방법:
$("body").trigger({ type:"logged", user:"foo", pass:"bar" });
제가 좀 오바일지는 모르겠지만 다 필요없고 강제로 다른 함수를 실행하는 함수가 핵심인것 같습니다.
그럼 즐프하세요.
※ 본 예제는 http://www.jquery.com 에 있는 내용임을 밝힙니다.
'프로그래밍 > jQuery' 카테고리의 다른 글
unload(), 페이지에서 벗어날 때 (2) | 2012.03.20 |
---|---|
undelegate(), 바인딩 해제하기 (0) | 2012.03.20 |
unbind(), 바인딩 해제하기 (0) | 2012.03.20 |
triggerHandler(), 하나의 함수만 실행시키기 (0) | 2012.03.20 |
toggle(), 토글하기 (0) | 2012.03.09 |
submit(), 폼 전송 이벤트 (1) | 2012.03.09 |
select(), 텍스트 드래그 이벤트 (2) | 2012.03.09 |
scroll(), 스크롤 이벤트 (3) | 2012.03.06 |