2011-02-07 8 views
3
var links = document.body.querySelectorAll("p.sourcelinks a.individual_source_link"); 
for(var i=0;i<links.length;i++) 
{ 
    links[i].onclick = null; 
} 

그러나 현재 코드는 onclick 이벤트를 제거하지 않습니다. 나는 greasemonkey 대본이기 때문에 그들이 어떻게 될지 전혀 모른다.요소에 대한 모든 onclick 이벤트 제거

+0

"내 현재 코드 (what)이지만 onclick 이벤트는 제거되지 않습니다." !!! –

+0

"내 현재 코드입니다 ..."라고 생각합니다. – w35l3y

답변

6

이 코드는 element.onclick 대소 문자로 추가 된 이벤트 만 취급합니다. addEventListener (표준 호환 브라우저 용) 및 attachEvent (IE 용)에서 추가 된 이벤트는 어떻습니까?

이벤트를 제거하고 .onclick을 null로 설정하려면 removeEventListener 및 detachEvent를 사용해야합니다. 그러면 모든 기지가 뒤덮일 것입니다.

+0

이것은 Greasemonkey 질문입니다. IE와'detachEvent'는 적용되지 않습니다. –

0

onClick에 또는 onClick이라는 JavaScript 함수가 있다고 생각합니다. <a> 링크입니다.

href 태그 인 onClick 이벤트를 제거하거나 두 경우 모두 제거하여 둘 중 하나를 제거 할 수 있습니다.

for(var i=0;i<links.length;i++) 
    { 

     links[i].href='#'; 
     links[i].onclick = ''; 
    } 
+0

http://tv.blinkx.com/show/penn-teller-bullshit/Uy5MaFV5qcfgsDINw-hR0_Xfvuo#s3e6 – Steven

+0

@Steven - 무엇을 작동하지 않는 것 같습니까? 사용을 중지하려고합니까? 해당 페이지의 요소가 질문의 기준과 일치하지 않습니다. – codingbadger

1

코드가 작동하지 않습니다. because of GM's sandbox. links is in an XPCNativeWrapper.

은과 같이,이 사용 setAttribute() 해결하기 위해 : 다른 방법을 설정하는 클릭 핸들러가 필요합니다

var links = document.body.querySelectorAll("p.sourcelinks a.individual_source_link"); 
for(var i=0;i<links.length;i++) 
{ 
    links[i].setAttribute ("onclick", null); 
} 


주 (예를 들어, removeEventListener()를) 다른 방법을 해제 할 수 있습니다.

3

이 문서는 아마 유용 할 것 : 특히

http://www.computerhowtoguy.com/how-to-use-the-jquery-unbind-method-on-all-child-elements/

한 부분은 모든 클릭 이벤트를 제거하는 재귀 함수입니다. 클릭 이벤트가 jQuery를 사용하여 생성 된 경우 jQuery는 클릭 이벤트를 제거합니다. 이 기사에서 제공하는 함수는 jQuery로 만든 함수와 그렇지 않은 함수를 모두 제거합니다.

function RecursiveUnbind($jElement) { 
    // remove this element's and all of its children's click events 
    $jElement.unbind(); 
    $jElement.removeAttr('onclick'); 
    $jElement.children().each(function() { 
     RecursiveUnbind($(this)); 
    }); 
} 

당신은 다음과 같은 기능을 부를 것이다 : :

RecursiveUnbind($('#container')); 

이 함수는 jQuery를 개체 매개 변수를 사용하지만, 쉽게 이름으로 문자열을 전달하기 위해 그것을 바꿀 수 주어진 기능이 있습니다 또는 요소에 대한 ID의 가장 좋은 것이라고 생각합니다.

클릭 이벤트 만 처리하는 동안 다른 사람이나 모든 것을 처리하기 위해 쉽게 수정할 수 있습니다.

관련 문제