Javascript 鼠标悬停时保持JQuery对话框打开

Javascript 鼠标悬停时保持JQuery对话框打开,javascript,jquery,html,Javascript,Jquery,Html,我想在母版页上显示通知,为此我使用JQuery对话框。 我可以实现自动显示和隐藏页面加载使用下面的代码。但我想保持对话框打开,如果它是由鼠标悬停 $(document).ready(function () { $("#dialog").dialog({ autoOpen: false, draggable: false, resizable: false, height: 100, hide: {

我想在母版页上显示通知,为此我使用JQuery对话框。 我可以实现自动显示和隐藏页面加载使用下面的代码。但我想保持对话框打开,如果它是由鼠标悬停

$(document).ready(function () {

    $("#dialog").dialog({
        autoOpen: false,
        draggable: false,
        resizable: false,
        height: 100,
        hide: {
            effect: 'fade',
            duration: 2000
        },
        open: function () {
            $(this).dialog('close');
        },
        close: function(){
            // $(this).dialog('destroy');
        },
        show: {
            effect: 'fade',
            duration: 2000
        }
    });

    var x = $("#<%= imgNotifcation.ClientID %>").position().left + $("#<%= imgNotifcation.ClientID %>").outerWidth();
    var y = $("#<%= imgNotifcation.ClientID %>").position().top - jQuery(document).scrollTop();

    // var x = 0;

    $("#dialog").dialog("open");
    $('#dialog').dialog( 'option', 'position', [x-90, y+25] ); 

});
$(文档).ready(函数(){
$(“#对话框”)。对话框({
自动打开:错误,
可拖动:错误,
可调整大小:false,
身高:100,
隐藏:{
效果:“褪色”,
持续时间:2000年
},
打开:函数(){
$(this.dialog('close');
},
关闭:函数(){
//$(this.dialog('destroy');
},
展示:{
效果:“褪色”,
持续时间:2000年
}
});
var x=$(“#”)位置().左+$(“#”)外径();
var y=$(“#”)position().top-jQuery(document.scrollTop();
//var x=0;
$(“对话框”)。对话框(“打开”);
$('对话框')。对话框('选项','位置',[x-90,y+25]);
});
这项工作很好,但即使我将鼠标悬停在div#dialog上,它也会隐藏一个对话框。
如果对话框悬停,我希望它保持打开状态。

在显示对话框后,立即调用关闭函数。你不能这样阻止。当鼠标离开对话框时,您可以设置关闭计时器,在悬停时停止计时器,然后重新启动

您需要一个变量来存储关闭计时器:

var dialogCloseTimer = null;
$("#dialog").on("mouseenter", function() {
    window.clearTimeout(dialogCloseTimer);
}).on("mouseleave", function() {
    var self = this;
    dialogCloseTimer = window.setTimeout(function() {
        $(self).dialog('close');
    }, 1000);
});
在对话框配置中,用1秒(1000毫秒)启动关闭计时器:

配置对话框后,为
mouseenter
mouseleave
事件设置侦听器,以停止并重新启动关闭计时器:

var dialogCloseTimer = null;
$("#dialog").on("mouseenter", function() {
    window.clearTimeout(dialogCloseTimer);
}).on("mouseleave", function() {
    var self = this;
    dialogCloseTimer = window.setTimeout(function() {
        $(self).dialog('close');
    }, 1000);
});

请看这个例子

var i=0;
美元(“.overout”)
.mouseover(函数(){
i+=1;
$(this.find(“span”).text(“鼠标悬停在x+i上”);
})
.mouseout(函数(){
$(this.find(“span”).text(“鼠标悬停”);
});
var n=0;
$(“.enterleave”)
.mouseenter(函数(){
n+=1;
$(this.find(“span”).text(“鼠标输入x”+n);
})
.mouseleave(函数(){
$(this.find(“span”).text(“鼠标左键”);
});
.out{
宽度:40%;
高度:120px;
利润率:0.15px;
背景色:#d6edfc;
浮动:左;
}
.在{
宽度:60%;
身高:60%;
背景色:#fc0;
利润率:10px自动;
}
p{
线高:1米;
保证金:0;
填充:0;
}

移动鼠标
移动鼠标

我在这里看不到任何代码在您悬停对话框时触发关闭。你确定你的全部代码都在这里吗?@Danny H。。是的,全部代码都在这里。对话框关闭事件是在打开事件本身中编写的。这就是我一直在寻找的。。非常感谢…-)