2013-01-10 7 views
0

내 페이지에 일부 html이 있고 내 머리에 $("#someelement").click(alert("click"));이 있습니다. #someelement가 있는지 여부에 상관없이 어떤 이유로 페이지를로드 할 때 경고가 울립니다. 그러나 $("#someelement").click(function(){alert("click")}); 일 때 실행되지 않습니다. 왜 그런가요?페이지로드시 JQuery 이벤트 핸들러 실행

+1

당신이 $ (문서) .ready를 그에서 포장나요 작업()? – Praveen

+0

좋은 질문입니다. 나는 그걸로 시험해 보았고, 두 가지 방법으로 결과가 같았습니다. – Bluefire

+0

해당 코드를 게시 할 수 있습니까? – Praveen

답변

2

alert("foo")은 foo에 즉시 경고하므로 이벤트 핸들러로 전달할 수있는 함수를 반환하지 않습니다. 대신 함수를 jQuery 이벤트 바인딩 메소드에 전달해야한다. 이 코드는 <head></head>에있는 경우

$("#someelement").click(function(){ 
    alert("click"); 
}); 

는 또한, 그것은 $(document).ready()에 싸여 될 필요가있다.


alert

$(document).ready(function(){ 
    $("#someelement").click(function(){ 
     alert("click"); 
    }); 
}); 

window.alert는, 예로서 window 개체 정의하는 방법이다. 문자열 인 하나의 매개 변수가 필요하며 이는 window 객체의 멤버 여야합니다. alert 뒤에 ("string")을두면 (예 : alert("string")) 해당 기능이 실행되어 팝업 창이 "string"이됩니다. 함수에 파라미터로 alert("string")을 배치하면 똑같은 일이 발생합니다. 코드 실행시 팝업 창이 나타납니다.

+0

감사합니다. 관심이 없으면 어떻게 될까요? – Bluefire

+0

'alert ("Foo")'가 함수를 반환하지 않기 때문에. '$ .fn.click()'은 함수가 첫 번째 매개 변수로 전달되도록 요구합니다. JavaScript가 작동하는 방식입니다. –

0

이 시도 :

$(document).ready(function() { 
    $("#someelement").click(function(){alert("click")}); 
}); 
여기

있는 Fiddle