2017-04-03 26 views
4

私は要素からリスナーを削除する方法を知っていますが、ページ上のすべての要素からすべてのイベントリスナーを削除するにはどうすればよいですか?ページからすべてのリスナーを削除するにはどうすればよいですか?

jQueryと純粋なJSソリューションは素晴らしいでしょう。

+0

は、なぜあなたはそれを行う必要がありますか? – Ryan

+0

jQuery .off()をチェックしましたか? http://api.jquery.com/off/ – Mary

+0

多分あなたはここで答えを得るでしょう: http://stackoverflow.com/questions/19469881/remove-all-event-listeners-of-specific-type –

答えて

2

jQueryの.off functionを調べることをお勧めします。 また、this stackoverflow questionに基づいて、私は次のコード

$("body").find("*").off(); 

ですべてのすべてのリスナーを削除しようとするだろう、これはあなたを助けることができる願っています。

+0

私はこれをhttps://www.reddit.com/place?webview=trueでテストしましたが、何もしていないようです。キャンバスをクリックするとズームインしたりズームアウトしたりします。コードが壊れているのですか、キャンバスがイベントリスナーを使用していませんか? – Pikamander2

+0

ああ、onclickはイベントリスナーとしてカウントされないと思います。 – Pikamander2

+0

私はこのキャンバスに関連する問題で何かを見つけようとしましたが、私はこの投稿より多く見つけることができません:http://www.c-sharpcorner.com/UploadFile/cd3310/html5-canvas-disable-event-listener-by -名/。 –

1

これも試すことができます。

http://jsfiddle.net/LkfLezgd/9/

$("#cloneButton").click(function() { 
$('body').replaceWith($('body').clone().html()); 
}); 
1

あなたは以下のようにフォーム要素をループお好みの方法で、イベントリスナーを削除することができます。

これを行う最も速い方法は、すべてのイベントリスナーを削除するノードをクローンするだけですが、 'onclick'属性が使用されている場合は削除されません。

document.getElementById('button').addEventListener('click', onClick, false); 
 

 
function onClick() { 
 
    console.log('Form clicked'); 
 
    var form = document.getElementById('myForm'); 
 

 
    for(var i = 0; i < form.elements.length; i++){ 
 
     var elm = form.elements[i]; 
 
     removeEvents(elm); 
 
    } 
 
} 
 

 
function removeEvents(elm) { 
 
    // The fastest way to do this is to just clone the node, which will remove all event listeners: 
 

 
    var new_element = elm.cloneNode(true); 
 
    elm.parentNode.replaceChild(new_element, elm); 
 
}
<form id="myForm"> 
 
    <input id="button" type="button" value="Click" /> 
 
</form>

1

ただ、デフォルトでイベントを削除しますHTMLのDOMを、複製します。

ここは例です。

<html> 
 

 
<head> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> 
 
    <script> 
 
     $(document).ready(function() { 
 
      $("#EventButton").click(function() { 
 
       alert("Click event worked"); 
 
       var old_element = document.documentElement; 
 
       var new_element = old_element.cloneNode(true); 
 
       old_element.parentNode.replaceChild(new_element, old_element); 
 
      }); 
 
     }); 
 
    </script> 
 
</head> 
 

 
<body> 
 
    <button id="EventButton">Remove Events</button> 
 
</body> 
 

 
</html>

関連する問題