2014-12-05 4 views
0

on 이벤트가 발생하면 함수를로드하려고합니다.이벤트에 jQuery를 사용할 때 JavaScript 함수 실행

이 코드가 있지만 작동하지 않습니다.

function myFunction(data){ 
     alert(data); 
    } 

    $(".element").on('keyup', myFunction('a')); 

나는이 같은 함수를 호출하고 싶지 않은 :

$(".element").on('keyup', function(){ 
     myFunction('a'); 
    }); 

가 어떻게이 일을해야합니까를?

$(document).on('keyup', ".element", 'a', myFunction); 

function myFunction(e){ 
    alert (e.data); 
} 

JSFiddle : 베드로

+0

왜 당신이 두 번째 방법은 함수를 호출하고 싶지 않은 : 당신이 사용자 정보를이 같은 폐쇄를 할 수있는 필요

function my_fx(data){ console.log(data) } $(".elem").on("keyup", my_fx); // data argument will be a jQuery Event object 

하지만 경우 : 인수 등 당신은 당신의 기능을 전달할 수 있습니다? – roryok

+2

@ 로열 크 덕분에 ....; D – Jai

답변

4

on의 위임 된 버전의 데이터 기능뿐만 아니라 전달 될 수 있도록 http://jsfiddle.net/TrueBlueAussie/kqLqvgp9/2/

주 : 않은 위임 된 데이터를 전달할 수 있어야on 처리기이지만, 'a' 매개 변수를 선택기로 혼동하여 어쨌든 위임 된 것으로 생각합니다.

JSfiddle : http://jsfiddle.net/TrueBlueAussie/kqLqvgp9/5/

$('.element').on('keyup', null, 'a', myFunction) 

function myFunction(e){ 
    alert (e.data); 
} 
+1

솔직히 말하면 나는 그것을 결코 알지 못했다. – Jai

+1

위임되지 않은 이벤트 핸들러에 데이터를 전달하려면 두 번째 (선택기) 인수로 'null'자리 표시자가 있어야합니다. doco에 표시된대로. .on ('keyup', null, 'a', myFunction)' – nnnnnn

+0

@nnnnnn : 알아두면 좋겠어, 그 버전을 포함하도록 대답을 조정했다. 감사 :) –

0

당신은 이런 식으로 작업을 수행 할 수 있습니다

nnnnnn으로

는 위임 된 이벤트 핸들러를 원하지 않는 경우 null와 선택기를 대체 할 수있는 지적

function myFunction(data){ 
    return function(){ 
     alert(data); 
    } 
} 

$(".element").on('keyup', myFunction('a')); 

기본적으로 항상 데이터를 사용하는 함수를 만듭니다. 알림 기능을 호출하십시오.

당신은 쉽게

$(".element").on('keydown', myFunction('b')); 
0

를 다시 사용할 수있는 jQuery를 콜백 기능을 기대하고있다.

function make_fx(custom_data){ 
    return function(jquery_event){ 
     console.log(custom_data); 
    } 
} 

$(".elem").on("keyup", make_fx("foo"));