2

jQuery を起動するにはどうすればよいですか

mouseleave

マウスが elementA AND elementB の上にないときのイベント?

理解を深めるには、こちらの例を参照してください。

2 つの異なるテーブル セルに elementA と elementB があるため、両方の要素を containerC にラップし、そこからイベントを発生させることはできません。

複数の要素を選択しようとしているわけではありません (,)。論理積 (&&) をエミュレートしようとしています。上記のように、マウスが elementA または elementB の上にないときにイベントを発生させる必要があります...

私の質問を理解していただければ幸いです...

4

3 に答える 3

3

mouse_overこれにより、マウスがいずれかの要素に入るとクラスが追加されます。次に、 aが検出されmouse_overたときに要素がないことを確認します。mouseleavesetTimeout は、mouseenter が mouseleave の前に起動できるようにするために必要であり、競合状態を排除するために追加の調整が必要になる場合があります。

働くフィドル

$('.myDiv, .myDiv1').mouseenter(function () {
    $(this).addClass('mouse_over')
})
$('.myDiv, .myDiv1').mouseleave(function () {
    $this = $(this)
    timeoutId = setTimeout(function () {
        $this.removeClass('mouse_over')
        if ($('.mouse_over').length == 0) {
            console.log('not_in_either');
        }
    }, 1);
});
于 2013-09-03T08:15:14.817 に答える
0

バリアントとして - たとえば「hovered」クラスを、mouseon のときに div に設定し、mouseleave のときにクラスを削除します。

次に、要素Aと要素Bに「ホバー」クラスがないことを確認する関数を作成し、両方が真の場合は何もしません。この関数を elementA および elementB の mouseleave イベントにバインドします。

于 2013-09-03T08:17:53.160 に答える
0

私はあなたのデモを更新しました。ボタンのクリックで動作するはずです。要件に応じて変更できます。

ここにデモがあります

$('.myDiv').mouseleave(function(){ console.log('out'); });
         $('input').click(function(){
              alert('a');
              $('.myDiv').trigger('mouseleave');
         });
于 2013-09-03T08:18:19.303 に答える