-1

イベントで遊ぼうとしてjQuery mouseentermouseleaveますが、失敗しています。

これが私がやろうとしていることです

$("#selector").mouseenter(function(){
        some code....
        jQuery(this).off('mouseenter'); 
    }
);
$("#selector").mouseleave(function(){
    some code....
    jQuery(this).on('mouseenter');
});

これ.off()は機能していますが、残念ながら機能し.onていません。

誰でもここで私を助けることができますか?

事前にt​​hx。

>

編集:上記の質問の情報が少なくて申し訳ありません。

ツールチップを開いてmouseenter、そのツールチップにいくつかのボタンを配置する必要があります。このツールチップは同じ div に追加されます。ツールチップのボタンをクリックしようとすると、mouseenterイベントが呼び出されるため、ツールチップが div に再度追加されます。したがって.off()、マウスがセレクターを離れなくなるまで tooptip が呼び出されると、イベントを呼び出します。

さらに情報が必要な場合はお知らせください。

再びThx。

4

3 に答える 3

1

イベントをハンドラーに再バインドする必要があります。$(this).on('mouseenter');ハンドラーをそれにバインドしません。

onハンドラーとしてバインドする関数をoff使用して、再度バインドできるようにしてみてください。.one

$("#selector").one('mouseenter', selMouseEnter);

$("#selector").mouseleave(function(){
    some code....
    $("#selector").one('mouseenter', selMouseEnter);
});

function selMouseEnter () {
    some code....
}

編集:やろうとしていることは、機能を使用する.hoverか、単に実装することで実現できます。これらの関数は、mouseenter と mouseleave で一度呼び出されるため、必要はありません。.mouseenter.mouseleavebind/unbind

于 2012-04-05T15:13:05.973 に答える
0

あなたがやろうとしていることは、次の方法で簡単に達成できます。

$("#selector").mouseenter(function(){
    some code....
}).mouseleave(function(){
    some code....
});

再バインドおよびバインド解除は必要ありません。

また、.on間違って使用しているので、関数も渡す必要があります。.onドキュメントを参照してください。

于 2012-04-05T15:17:33.250 に答える
0

onおよびoffメソッドは、イベントのオンとオフを切り替えるために使用されるのではなく、イベントをバインドおよびバインド解除するために使用されます。

したがって、この:

$("#selector").mouseenter(function(){
  some code....
});

以下と同じです:

$("#selector").on("mouseenter", function(){
  some code....
});

と:

$("#selector").bind("mouseenter", function(){
  some code....
});

マウスが要素の上にあるときにイベントをバインド解除する必要はありません。イベントを処理するだけmouseenterですmouseleave

$("#selector").mouseenter(function(){
  some code....
}).mouseleave(function(){
  some code....
});
于 2012-04-05T15:12:31.433 に答える