1

HTML タグからすべての JavaScript イベントを削除する方法はありますか?

例えば

<img src=" " onclick="" />
<img src=" " onerror="" />

これらのタグから onclick と onerror を削除したいと思います。例のように、html タグからすべての JavaScript イベントを削除したいと考えています。

4

5 に答える 5

2

これを行うと、イベントをクリアできます。

// get all img elements
var imgElements = document.getElementsByTagName('img');
// loop elements
for (var i = 0; i < imgelements.length; i++) { 
  // clear handler
  imgElements[i].onclick = null;
  // add other handlers here
  // imgElements[i].<here> = null;
}

getElementsByTagName()ここのドキュメント

更新 1 - ドキュメントのすべての要素

ドキュメントのすべての要素を取得する場合は、次を使用しますdocument.getElementsByTagName('*')

更新 2 - すべてのイベント

すべてのイベントをクリアするには、この回答をご覧ください

于 2012-10-18T09:38:57.733 に答える
0

jqueryを使用して:

$('*').each(function(){      
    if ($(this).is('img')) {
        $(this).unbind('click');
    }
});

特定の関数の onclick イベントのみを削除したい場合は、次のようにすることができます..

 $(this).unbind('click', FunctionName);

jQuery 1.7の時点で、イベント バインドにも使用できる$.on() and $.off()ため、クリック イベントのバインドを解除するには、よりシンプルで整然としたものを使用します。

$(this).off('click');
于 2012-10-18T09:47:28.980 に答える
0

jquery を確認できます.unbind()

参考:http ://api.jquery.com/unbind/

また、必要なときにイベント ハンドラを元に戻すのも簡単です。.bind()

于 2012-10-18T09:38:40.213 に答える
-1

ページ ソースから物理的に削除するという意味で「削除」する場合は、正規表現を使用してほとんどのパターンを取得し、パターンon(\w+?)="(.*?)"を空白文字列に置き換えることができます。(私はテストしていません、微調整が必​​要かもしれません)

バインドを解除して論理的に削除する場合のように「削除」する場合は、jQuery で unbind() メソッドを使用するか、各イベントを DOM を介して null ループに設定できます。

于 2012-10-18T09:45:52.633 に答える
-1

document.onload イベントでこの JavaScript を試してください (未テスト):

var all = document.getElementsByTagName('*');
for (var i = 0; i < all.length; i++) {
    all[i].onclick = undefined;
    all[i].onerror = undefined;
}
于 2012-10-18T09:40:55.580 に答える