2012-04-28 2 views
13
elemen.addEventListener('click',func,false); 
elemen.addEventListener('click',func,false); 

elemen을 클릭하면 func 번을 두 번 불러야합니까?동일한 addEventListener가 작동합니까?

예 ... 확인하는 솔루션이 동일한 이벤트 리스너가 elemen에 있습니까?

답변

23

func아니요을 클릭 할 때 두 번 호출 할 수 있습니다. 그러나 세부 사항 및 "잡았다"를 위해 독서를 유지하십시오. 사양에 addEventListener 가입일

:

동일한 여러 EventListeners가 중복 인스턴스가 삭제되고 동일한 파라미터와 동일한 EventTarget에 등록하는 경우. 그들은 이 아니므로 EventListener이 두 번 호출되며, 폐기되기 때문에 removeEventListener 메서드로 제거 할 필요가 없습니다.

(내 강조) 여기

은 예입니다 :

var target = document.getElementById("target"); 
 

 
target.addEventListener("click", foo, false); 
 
target.addEventListener("click", foo, false); 
 

 
function foo() { 
 
    var p = document.createElement("p"); 
 
    p.innerHTML = "This only appears once per click, but we registered the handler twice."; 
 
    document.body.appendChild(p); 
 
}

그것은이 같은 기능으로 가지고,하지만 유의해야 , 같은 일을하는 함수 만이 아닙니다.

var target = document.getElementById("target"); 
 

 
var count; 
 
for (count = 0; count < 4; ++count) { 
 
    target.addEventListener("click", function() { 
 
    var p = document.createElement("p"); 
 
    p.innerHTML = "This gets repeated."; 
 
    document.body.appendChild(p); 
 
    }, false); 
 
}
<input type="button" id="target" value="Click Me">

마다 루프 반복,에 다른 기능이 생성되기 때문이다 예를 들어, 여기에 내가 불려가는 모두의 요소에 네 개의 개별 기능을 접선 해요 (비록 코드가 동일하더라도).

+0

나는 OP가 아니지만이 대답은 나를 도왔습니다. 고맙습니다 !! –

관련 문제