【问题标题】:JQuery mouseout timeout part 2jQuery mouseout 超时第 2 部分
【发布时间】:2009-09-18 16:07:48
【问题描述】:

这是this one 之后的另一个问题。

$('.overlay').bind("mouseenter",function(){
  $(this).fadeTo('slow', 0);
}).bind("mouseleave",function(){
  var $this = $(this);                               
  setTimeout(function() { 
    $this.fadeTo('slow', 1);
  }, 2000);
})

在我的 .overlay div 下,我有一些我想要使其可点击的内容。因此,在这种情况下, .overlay 的不透明度变为 0,但仍覆盖了下面的内容。

如果我在这里使用fadeOut()fadeIn(),则.overlay 将完全消失,并且脚本认为我已将鼠标移出,即使我仍将鼠标悬停在.overlay 上。

【问题讨论】:

标签: jquery mouse effects


【解决方案1】:

即使不透明度为零,叠加层仍在吞噬鼠标事件。实际上,您的解决方案取决于此,因为您无法触发覆盖层上的 mouseentermouseleave 事件,并且仍然具有可点击的元素。

最好的办法可能是在容器 div 中创建叠加层和兄弟元素下方的元素。容器应该绑定了mouseentermouseleave 动作,当覆盖层完全淡出时,它也应该被隐藏。这将允许您点击它“下方”的元素。

关键是为了能够点击覆盖下方的元素,它必须被隐藏或不覆盖下方的元素,即使它是完全透明的。

顺便说一下,我认为这种行为是特定于浏览器的。例如,在 IE 中,您可能可以在透明覆盖层下方单击,但在 FF 中则不能。

【讨论】:

  • 谢谢,这非常有效。然而它仍然是喜怒无常的,有时在多次迭代脚本后它不会在悬停时保持淡出。如果鼠标在动画时移动,它可能需要一个步骤来取消淡入淡出。最后我只是把它淡出并留在那里。
猜你喜欢
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多