jQuery에서 이벤트 핸들러에 인수를 전달하려면 어떻게 해야 합니까?
jQuery 코드를 사용하면 다음과 같습니다.
$("#myid").click(myfunction);
function myfunction(arg1, arg2) {/* something */}
인수를 전달하는 방법myfunctionjQuery를 사용하면서?
가장 간단한 방법은 이렇게 하는 것입니다(어떤 이벤트 정보도 함수에 전달하지 않을 경우).
$("#myid").click(function() {
myfunction(arg1, arg2);
});
이렇게 하면 익명 함수가 생성되는데, 이 함수는 다음과 같은 경우에 호출됩니다.click이벤트가 트리거됩니다.이것은 차례로 전화할 것입니다.myfunction()당신이 제시한 주장과 함께.
(의 값을 유지하려면)this함수가 호출되면 이벤트를 트리거한 요소로 설정한 다음 와 함께 함수를 호출합니다.
$("#myid").click(function() {
myfunction.call(this, arg1, arg2);
});
예제에서 설명하는 방식으로 참조를 직접 전달할 수 없거나 단일 인수가 jQuery 개체가 됩니다.
참조를 전달하려면 jQuery의 함수(에 대한 교차 브라우저 래퍼)를 활용해야 합니다.이를 통해 앞에 바인딩된 인수를 전달할 수 있습니다.event논쟁.
$("#myid").click($.proxy(myfunction, null, arg1, arg2));
이 예에서,myfunction()그것으로 처형될 것입니다ThisBinding멀쩡한null물체가 아니므로 정상적인this이벤트를 트리거한 요소 값 사용), 인수(순서)와 함께arg1,arg2그리고 마침내 jQuery.event필요하지 않을 경우 무시할 수 있는 개체입니다(함수의 인수에 이름을 붙이지도 마십시오).
jQuery를 사용할 수도 있습니다.event개체가 데이터를 전달하지만 이를 수정해야 합니다.myfunction()를 통해 접속하다event.data.arg1(당신의 질문이 언급하는 것과 같은 함수 인수가 아님), 또는 적어도 전자 예제와 같은 수동 프록시 함수를 도입하거나 후자 예제를 사용하여 생성된 함수를 도입합니다.
$("#myid").on('click', {arg1: 'hello', arg2: 'bye'}, myfunction);
function myfunction(e) {
var arg1 = e.data.arg1;
var arg2 = e.data.arg2;
alert(arg1);
alert(arg2);
}
//call method directly:
myfunction({
arg1: 'hello agian',
arg2: 'bye again'
});
또한 on/off 메서드를 사용하여 특정 이벤트 핸들러를 바인딩 및 바인딩 해제할 수 있습니다.
예:
$("#myid").off('click', myfunction);
이렇게 하면 #myid에서 myfunction 핸들러를 바인딩 해제합니다.
당신은 확실히 알렉스의 답변을 사용해야 하지만, 프로토타입 라이브러리의 "바인드" 방법은 Ecmascript 5에서 표준화되었고, 곧 브라우저에서 기본적으로 구현될 것입니다.다음과 같이 작동합니다.
jQuery("#myid").click(myfunction.bind(this, arg1, arg2));
이미 훌륭한 답이 있지만 어쨌든 여기 제 2센트가 있습니다.다음을 사용할 수도 있습니다.
$("#myid").click({arg1: "foo", arg2: "bar"}, myfunction)
그리고 듣는 사람은 다음과 같습니다.
function myfunction(event){ alert(event.data.arg1); alert(event.data.arg2); }
이전 스레드이지만 검색을 위해 다음을 시도합니다.
$(selector).on('mouseover',...);
... 그리고 "data" 파라미터를 확인해보세요. http://api.jquery.com/on/
예:
function greet( event ) {
alert( "Hello " + event.data.name );
}
$( "button" ).on( "click", {name: "Karl"}, greet );
$( "button" ).on( "click", {name: "Addy"}, greet );
단순:
$(element).on("click", ["Jesikka"], myHandler);
function myHandler(event){
alert(event.data); //passed in "event.data"
}
언급URL : https://stackoverflow.com/questions/979337/how-can-i-pass-arguments-to-event-handlers-in-jquery
'programing' 카테고리의 다른 글
| git에서 꺼내는 동안 오류 발생 - 리포지토리 데이터베이스 .git/objects에 개체를 추가할 수 있는 권한이 부족합니다. (0) | 2023.09.12 |
|---|---|
| 이 코드보다 XML 문서를 문자열로 변환하는 더 우아한 방법이 있습니까? (0) | 2023.09.12 |
| %wt% 등이 작동하지 않음 (0) | 2023.09.12 |
| jQuery POST 양식 데이터 (0) | 2023.09.12 |
| k8s 작업을 통해 데이터베이스 마이그레이션 실행 (0) | 2023.09.12 |