1

私はこれを平易な英語で行おうとしています。マウスオーバーイベントからのオープンdivがあります。マウスをdivから取り出すと、マウスアウトで閉じます。完璧です。必要なのは、マウスアウトするときに、クラスxまたはクラスyのdivにマウスアウトすると、openDivが閉じず、クラスxまたはクラスy以外の他のdivにマウスアウトすると、openDivが閉じます。

これが私がこれまでに持っているものですが、それは機能しません:

$("#openDiv").mouseout(function () {
    var $c = $(e.target); //div where mouse is
    if ($c.is('div.x') || ('div.y')) //if div where mouse is has class x or y
    {
        $("#openDiv").show(); //show or keep open from the mouseover event
    } else {
        $("#openDiv").hide(); //hide openDiv if mouse is anywhere outside openDiv or div with class x or y
    }
});

更新: 実用的な答えを選択するには、さらに助けが必要です!jsfiddle.net/bUzPG/8クラスx、y、またはzにカーソルを合わせると開いたままになり、xまたはzにカーソルを合わせるとopenDivがピンク色になりますが、openDivの外側にカーソルを合わせるとピンク色になり、灰色になって非表示になります。灰色に変えて隠す方法はありますか?

4

2 に答える 2

1
$("#openDiv").mouseout(function (e) { //you forgot to add the event `e` element
    var $c = $(e.target);
    if ($c.is('div.x') || $c.is('div.y')) //you forgot $c.is on the second part
    {
        $("#openDiv").show(); 
    } else {
        $("#openDiv").hide(); 
    }
});
于 2011-06-27T19:35:24.897 に答える
0

単純なホバーロジックをそのままにして(マウスを非表示にして)、マウスがXまたはYdivの上にあるときに再表示してみませんか。

$('#openDiv').mouseout(function() {
    $(this).hide();
});

$('div.x').mousein(function() {
    $('#openDiv').show();
});

$('div.x')セレクターにIDまたは少なくともDOM全体ではないコンテキストを持たせると、「ちらつき」が隠れてから再び表示されても目立たなくなるに違いありません。

于 2011-06-27T19:32:27.007 に答える