jQuery : 이벤트 핸들러 함수에서 이벤트 객체를 인수로 전달하지 않고 가져 오는 방법은 무엇입니까?
onclick
내 링크에 속성 이 있습니다 .
<a href="#" onclick="myFunc(1,2,3)">click</a>
이는 JavaScript에서이 이벤트 핸들러를 가리 킵니다.
function myFunc(p1,p2,p3) {
//need to refer to the current event object:
alert(evt.type);
}
이벤트 객체 "evt"가 매개 변수에 전달되지 않았기 때문에이 객체를 얻을 수 있습니까?
나는 시도 window.event
하고 $(window.event)
있지만, 둘 다이다 undefined
.
어떤 생각?
이벤트 객체 "evt"가 매개 변수에서 전달되지 않았기 때문에이 객체를 얻을 수 있습니까?
아니요, 신뢰할 수 없습니다. IE 및 일부 다른 브라우저에서는 window.event
(아님 $(window.event)
) 으로 사용할 수 있지만 이는 비표준이며 모든 브라우저에서 지원되지는 않습니다.
이벤트 객체를 함수에 전달하는 것이 좋습니다.
<a href="#" onclick="myFunc(event, 1,2,3)">click</a>
event
변수 가있는 컨텍스트에서 코드를 실행하기 때문에 IE가 아닌 브라우저에서도 작동합니다 (로 확인되기 때문에 IE에서 작동 event
합니다 window.event
). IE6 +, Firefox, Chrome, Safari 및 Opera에서 사용해 보았습니다. 예 : http://jsbin.com/iwifu4
그러나 가장 좋은 방법은 최신 이벤트 처리를 사용하는 것입니다.
HTML :
<a href="#">click</a>
jQuery를 사용하는 JavaScript (jQuery를 사용하기 때문에) :
$("selector_for_the_anchor").click(function(event) {
// Call `myFunc`
myFunc(1, 2, 3);
// Use `event` here at the event handler level, for instance
event.stopPropagation();
});
... 또는 당신이 정말로 전달하려는 경우 event
에 myFunc
:
$("selector_for_the_anchor").click(function(event) {
myFunc(event, 1, 2, 3);
});
선택자는 앵커를 식별하는 모든 것이 될 수 있습니다. 선택할 수있는 매우 풍부한 세트 가 있습니다 (거의 모든 CSS3와 일부). 당신은 추가 할 수 id
또는 class
앵커로, 그러나 다시, 당신은 다른 선택이있다. 인위적인 것을 추가하는 것보다 문서의 어디에서나 사용할 수 있다면 좋습니다.
IE window.event
에서는 'use strict'
지시어 없이 다른 브라우저에서 이벤트 객체 를 얻을 수 arguments.callee.caller.arguments[0]
있습니다.
function myFunc(p1, p2, p3) {
var evt = window.event || arguments.callee.caller.arguments[0];
}
다음과 같이 이벤트 핸들러 선언을 작성하십시오.
<a href="#" onclick="myFunc(event,1,2,3)">click</a>
그러면 "myFunc ()"함수가 이벤트에 액세스 할 수 있습니다.
"onclick"속성의 문자열 값은 Function 생성자를 호출하는 브라우저 (내부적으로)와 거의 동일한 방식으로 함수로 변환됩니다.
theAnchor.onclick = new Function("event", theOnclickString);
(IE 제외). 그러나 "이벤트"는 IE의 전역 (창 속성)이므로 모든 브라우저에서 이러한 방식으로 함수에 전달할 수 있습니다.
마크 업에서 이벤트 핸들러를 호출하면 지금처럼 할 수 없습니다 (x-browser). 그러나 클릭 이벤트를 jquery로 바인딩하면 다음과 같은 방법이 가능합니다.
마크 업 :
<a href="#" id="link1" >click</a>
자바 스크립트 :
$(document).ready(function(){
$("#link1").click(clickWithEvent); //Bind the click event to the link
});
function clickWithEvent(evt){
myFunc('p1', 'p2', 'p3');
function myFunc(p1,p2,p3){ //Defined as local function, but has access to evt
alert(evt.type);
}
}
이벤트 산부인과 이후
'Programing' 카테고리의 다른 글
Linux에서 분할 오류를 포착하는 방법은 무엇입니까? (0) | 2020.11.15 |
---|---|
MOQ-다른 인터페이스로 캐스팅해야하는 인터페이스를 모의하는 방법은 무엇입니까? (0) | 2020.11.15 |
git-ls-remote를 나열 할 때 태그 이름 뒤에 "^ {}"가있는 이유는 무엇입니까? (0) | 2020.11.15 |
`find -perm`을 사용하여 권한이 설정되지 않은 경우 찾기 (0) | 2020.11.15 |
.gitmodules에서 git 하위 모듈 복원 (0) | 2020.11.15 |