鼠标悬停在指定的 div 上并保持原始 div 打开

发布于 2024-11-17 10:20:02 字数 790 浏览 3 评论 0原文

我试图用简单的英语来做到这一点:我有一个来自鼠标悬停事件的打开的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 之外也会将其变成粉红色,而实际上它应该变成灰色并隐藏它。知道如何让它变成灰色并隐藏吗?

I'm trying to do this in plain english: I have an open div from a mouseover event, when I take the mouse out of the div it closes on mouse out, perfect. What I need is that when I mouseout, if I mouseout to a div with class x or class y, the openDiv will not close, any mouseout on any other div besides class x or class y, will cause the openDiv to close.

Here is what I have so far, but it doesn't work:

$("#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
    }
});

UPDATE:
I need more help to select a working answer!
jsfiddle.net/bUzPG/8
Hovering over class x,y,or z keeps it open, hovering over x or z turns the openDiv pink, but hovering outside the openDiv also turns it pink, when it should turn grey and hide it. Any idea how to make it turn grey and hide?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

深爱成瘾 2024-11-24 10:20:02
$("#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(); 
    }
});
$("#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(); 
    }
});
中性美 2024-11-24 10:20:02

为什么不简单地保持简单的悬停逻辑不变(鼠标移出时隐藏),然后在鼠标悬停在 X 或 Y div 上时重新显示它。

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

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

如果你让你的 $('div.x') 选择器有一个 ID 或者至少有一个不是整个 DOM 的上下文,我敢打赌隐藏然后再次显示的“闪烁”甚至不会明显。

Why don't you simply keep your simple hover logic as it is (hide on mouse out) but then simply re-show it when the mouse is over the X or Y div.

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

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

If you make your $('div.x') selector have an ID or at least a context that isn't the entire DOM, I bet the "flicker" from hiding then showing again isn't even noticeable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文