3
$('body').on('mouseover mouseout', '*:not(.printToolBar)', function (e) {
    if (this === e.target) {
        (e.type === 'mouseover' ? setMenuBox(e.target) : removeMenuBox(e.target));
    }
   });

私も試してみ.onまし.offたが、望ましい結果を得ることができませんでした。

4

1 に答える 1

2

元のバインディングから不要な要素を除外するだけです。

$('body').on('mouseover mouseout', '*:not(.undesiredelements)', function (e) {
    if (this === e.target) {
        $(e.target).css('border', (e.type === 'mouseover' ? '1px solid blue' : ''));
    }
});

「一部の要素のバインディングを削除する」ことは、ハンドラーが起動されるセレクター条件を変更することと同じです。のような緩いセレクターを既に使用した後にバインディングを変更する必要がある場合は*、元のハンドラーのバインドを解除し、目的の要素に再バインドするだけです。

ここで発生するイベント ハンドラー バインディングは1 つだけであることに注意してください (つまり、body要素に対して) 。

于 2012-11-27T08:03:58.847 に答える