5

私はこのようにしています:

$.each($('img'), function () {
    this.unbind('onmouseover');
});

これは動作しません。なんで?

4

2 に答える 2

10

以下のようにしてみてください、

$('img').unbind('mouseover');

ループする必要はありません..また、ループする必要はありませmouseoveronmouseover

前提条件:ハンドラー.bindをバインドするために使用しているmouseover

バインドを使用していません。一部の画像にonmouseover属性があり、削除したいのですが。$('img')。removeAttr('onmouseover')を試しましたが、それでも機能しません

  1. インラインイベントハンドラーの使用は標準ではありません。
  2. jQueryを使用しているため、以下のようにハンドラーをバインドする必要があります。

コード:

$('img').on('mouseover', function () {
     //Your code
});

.offそして後で->を使用してそれらのバインドを解除できます

$('img').off('mouseover');

あなたが持っているものの回避策(好ましくない)、(参照

$.each($('img'), function () {
    $(this).removeAttr('onmouseover');
});
于 2012-05-24T14:41:59.030 に答える
6
  • $.each()jQuery要素コレクションにすでに内部がある場合は必要ありませんeach()

  • また、各関数は同じコレクションを返すため、jQueryのハンドラーメソッドを「デイジーチェーン」で削除できます。各アタッチメソッドには独自の削除メソッドペアがあるため、それに応じて使用します。

  • 最後に、DOM要素のハンドラー(インラインイベントハンドラー)を削除するには、nullまたは;を実行する関数に置き換えますreturn false

コンセプトコードは次のとおりです。

$('img')
    .unbind('mouseover')               //remove events attached with bind
    .off('mouseover')                  //remove events attached with on
    .die('mouseover');                 //remove events attached with live
    .each(function(i,el){              //and for each element
        el.onmouseover = null          //replace the onmouseover event
    });
于 2012-05-24T14:42:35.270 に答える