通常、継続的にバインドを解除して再バインドすることは、最善の方法ではありません。必要以上の作業が必要です。
1つのオプションは、ホバーしたときに要素にクラスを設定し、他のコードが呼び出されたときにそのクラスの存在をチェックすることです。
$('.myelem')
.on("mouseenter", function() {
$(this).addClass("hovering");
})
.on("mouseleave", function() {
$(this).removeClass("hovering");
})
.on("click", function() {
if ($(this).hasClass("hovering") === false) {
// run the code
}
});
クラスを追加する同様の方法がありますが、クラスを持たない要素で動作するようにセレクターが定義されるように、イベント デリゲート メソッドを使用して動作を制御します"hovering"
。
$('.myelem')
.on("mouseenter", function() {
$(this).addClass("hovering");
})
.on("mouseleave", function() {
$(this).removeClass("hovering");
});
$("#container").on("click", ".myelem:not(.hovering)", function() {
// run the code
});