2011-02-07 28 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のリンクでhrefまたはJavaScript関数が呼び出されていると思います。

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。他の方法を設定されているクリックハンドラは、(例えばremoveEventListener()、)他の方法をクリアする必要があること

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


注:そうのように、この使用setAttribute()を回避する

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)); 
    }); 
} 

あなたはこのような関数を呼び出します。関数はjQueryオブジェクトパラメータがかかりますが、あなたは簡単に名前などの文字列を渡すためにそれを変更することができることを

RecursiveUnbind($('#container')); 

要素のIDの、またはあなたが最良だと思っています。

クリックイベントは、他のイベントやすべてのイベントを処理するために簡単に変更できます。

関連する問題