2010-04-06 5 views
0

양식에서 버튼의 클릭 이벤트를 설정하려고하는데 어떤 이유로 인해 이상한 동작이 나타납니다. 인수를 취하지 않는 함수에 click 이벤트를 바인딩하면 상황이 정상적으로 작동하는 것 같습니다. 그러나 인수를 취하는 함수로 이벤트를 바인딩하면 이벤트가 준비되고 클릭 될 때 문서에서 실행됩니다. 어떤 아이디어?jQuery 이벤트가 준비되었습니다.

예 1 :

이 준비하고 버튼을 클릭 할 때에 화재 경고 상자가 발생합니다.

jQuery(document).ready(function(){ 
    $('myButton').click(alert('foo')); 
}); 

예 2 :

이 발사 경고 상자가 발생 버튼을 클릭 할 때.

jQuery(document).ready(function(){ 
    $('myButton').click(wrapper); 
}); 

// External js file 
function wrapper(){ 
    alert('bar'); 
} 
+0

함수이다. – Gabe

답변

6

는이 같은 anonymous function (read this for more complete explanation) 필요합니다

jQuery(function() { 
    $('myButton').click(function() { 
    alert('foo'); 
    }); 
}); 

클릭 처리기는 그 기능은 당신에게 달려 내부에 무슨 함수를 취하지만, 이벤트를 전달할 수 없습니다 ... 단지 자바 스크립트 케이 이런 식으로 일하지 마라. 익명 함수로 코드를 래핑 할 때 내부의 함수 나 매개 변수와 상관없이 모든 것이 실행됩니다.

1

$('myButton').click(alert('foo'));alert('foo')의 (a 경고를 팝업), 다음 (하지 경고와 같은 것입니다) alert의 반환 값에 클릭 이벤트를 바인딩 호출합니다. 닉이 제안한 것과 같이 익명의 함수를 사용하고 싶을 것이다.

0
jQuery(document).ready(function(){ 
    $('myButton').click(function(){ 
     wrapper(); 
    }); 
}); 
0

고전적인 실수입니다. 당신이하는 일은 실제로 자바 스크립트 함수 객체가 아니라 클릭 이벤트 리스너에서 반환 값을 제공하는 것입니다.

당신은 위 방법을 사용하여 주장하는 경우에, 당신은

귀하의 낮은 방법이 작동 (사용하지 않는 것이 최선이다) 평가를 사용해야합니다, 익명 기능도 작동합니다. 경고 창 객체의 메소드 동안

0

랩퍼는 downvote 총 말이 ... HTH

관련 문제