javascript - 悬停时打开和关闭模态窗口,失焦时关闭

标签 javascript jquery html fancybox

我使用 fancybox 作为我的模式窗口。我能够触发模态窗口在悬停时打开,但我也希望它在链接未悬停时关闭窗口(失焦?)。

$("a.mini-view").fancybox().hover(function() {
  $(this).click();
});

感谢任何帮助。

我添加了 mouseout,我不擅长 js,所以重构以下内容会有所帮助:

$(document).ready(function() {

  $('a.mini-view').mouseout(function () {
    $.fancybox.close();
  });

  $("a.mini-view").fancybox().hover(function() {
    $(this).click();
  });

  $("a.mini-view").fancybox({
    'overlayShow' : false,
    'autoScale'   : true
  });

});

如果我从一个链接直接转到另一个链接,而不在两个链接之间暂停,则不起作用

最佳答案

使用 .hover() 或其他鼠标输入/输出 jQuery 方法触发事件的主要问题称为冒泡

对于您的特定问题,最好的选择是使用 jQuery 插件 hoverIntent 。如果您访问他们的网站,他们有一个很好的示例来说明处理冒泡事件的含义。

加载hoverIntent js文件后,您可以创建两个函数来打开/关闭fancybox,hoverIntent将调用它们作为回调:

function openFancybox(){
 $(this).trigger("click");
}
function closeFancybox(){
 $.fancybox.close();
}

....然后是您的 hoverIntent 自定义脚本:

$(".mini-view").hoverIntent({
 sensitivity: 7,
 interval:500,
 timeout:0,
 over: openFancybox,
 out: closeFancybox 
}); // hoverIntent

(请参阅文档来微调您的设置)

...最后,您的 fancybox 自定义脚本将如下所示:

$(".mini-view").fancybox({
 'overlayShow' : false,
 'autoScale'   : true
}); // fancybox

SEE WORKING DEMO并随意探索源代码。

旁注:

  • 为了简化您的代码,您实际上可以在一个步骤中将两个插件应用到同一个选择器:

     $(".mini-view")
     .fancybox({
      'overlayShow' : false,
      'autoScale'   : true
     })
     .hoverIntent({
      sensitivity: 7,
      interval:500,
      timeout:0,
      over: openFancybox,
      out: closeFancybox 
     });
    
  • 由于您在代码中使用的选项,我假设您使用的是 fancybox v1.3.4。


更新 [2015 年 3 月]:

<强> DEMO 使用最新版本的Fancybox (v2.1.5)和hoverIntent (v1.8.0)

关于javascript - 悬停时打开和关闭模态窗口,失焦时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11727223/

相关文章:

javascript - 如何将变量分配给输入元素中的值属性?

javascript - BootStrap 折叠不正确的尺寸

javascript - slickgrid 可调整大小不刷新行

jquery - 将变量从 .each 循环传递到函数内的 if 语句

jquery - 如何选择不同方向时显示哪个div?

javascript - 如何防止浏览器阻止我创建的弹出窗口?

javascript - 尝试更改按钮的颜色 onclick

javascript - Bootstrap 的 Modal 不起作用

html - 如何在无法添加类或 ID 的情况下更改元素的内联样式文本颜色?

javascript - JQuery 每行多个输入字段 keyup 功能不起作用