2013-06-15 3 views
2

안녕하세요, 사용자가 요소를 클릭하고 해당 시간 동안 만 기본 동작을하지 못하게하고 다른 동작을 수행해야하는 경우 기본 동작을 방지해야합니다. 하는 내가 javascript에서 preventDefault 및 stopPropagation 제거하기

document.body.onclick = function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
} 

을 사용하지만 지금 문제는 내가 위의 작업을 수행 한 후 내가 제거 할 필요가있는 preventDefaultstopPropagation 링크 (A HREF) 중 어느 것도이 후 트리거되지지고 있기 때문이다. 그것을 수행 한 후에 이것을 어떻게 취소 할 수 있습니까? 그것은 순수한 JavaScript 코드이며 jquery와 같은 라이브러리를 사용하지 않습니다. 그래서 .bind.unbind을 사용할 수 없습니다. 이것에 대한 어떤 생각이라도 크게 감사 할 것입니다.

document.getElementById('theTarget').onclick = function(e) { 
    // ... 
} 

답변

1

당신은 addEventListenerremoveEventListener

function stopIt(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
} 

document.body.addEventListener("click", stopIt); 

// then later 

document.body.removeEventListener("click", stopIt); 
를 사용 bindunbind의 동작을 복제 할 수 있습니다 :
1

귀하의 요구 사항을 올바르게 이해하면 e.preventDefault();을 실행 취소 할 수 없습니다. 그러나 기본적으로 처리기 함수는 기본 동작을 수행하기 전에 실행됩니다. 따라서 귀하의 경우에는 e.preventDefault();이 전혀 필요하지 않습니다. <a> 태그에만 첨부하는 것을 잊지 마십시오.

var aTags = document.getElementsByTagName("a"); 

for (var i=0;i<aTags.length;i++){ 
    aTags[i].onclick = function (e) { 
     // just perform your action here, don't need e.preventDefault(); 
    } 
}