jQuery悬停问题:1。z-index?解开/重新绑定?

时间:2011-12-22 04:47:00

标签: jquery hover z-index unbind

让我知道这是否真的应该被问为两个独立的问题,但是因为它处理相同的代码块(在下面的小提琴中:http://jsfiddle.net/jhacks/xCcdn/89/),我觉得这对一个主题来说是最好的。如果我应该编辑并将其分成两部分,请告诉我。无论如何,希望你能看看代码...我遇到的以下问题:

  1. Z-索引。所以,正如您将在代码中看到的,当您将鼠标悬停在div上时,红色topIconNew div不会保持静止,但我希望它能够。我意识到这是因为它低于html中的topTip和topDrop div,因此当它们出现时,它会随之移动。但是,我必须将它放在html中的这些div下面,因为它是相对的,所以无论topIconNew div是否存在,让它始终如一地定位自己,它需要在html中首先。我想也许我可以通过使用z-index来完成这一切,但CSS在这里还不够。 jQuery中有什么要改变吗?

  2. 拆散/重新绑定。在jQuery代码中,单击topIconNew以获取要显示的topTip和topDrop div,我有.unbind(“hover”)。我希望在topTip和topDrop div显示时禁用悬停。但是,当尝试在.click(文档)函数中使用.rebind(“hover”)时,它仍然无效。什么是临时禁用.hover的最佳方法是什么?

  3. 另外关于悬停:如果您要删除.unbind(“悬停”)代码行,您会注意到当topTip / topDrop div显示时,悬停行为奇怪。当指针关闭时,另一个悬停topTip div将不会隐藏,div将成为永久性的。当topTip / topDrop div存在时,可以选择悬停以保持正常工作(而不是暂时禁用悬停时上面提到的接近)。我希望悬停的div当然总是低于开放的topTip / TopDrop div。

    无论如何,如果我的问题和/或代码不清楚,请告诉我。另外,我也可以创建另一个将这些问题分开的帖子,如果这样做更好的话。无论如何,任何和所有的帮助表示赞赏...谢谢!

    另外(并不重要,因为我觉得我可以弄清楚哪里出错了),为什么我的.css('background-color:#555555')不工作?

1 个答案:

答案 0 :(得分:0)

很抱歉,我没有时间对这两个问题给出完整的答案,但我对这一部分有一个简单的答案:

  

什么是临时禁用.hover的最佳方式?

我首选的方法是使用hoverEnabled变量并将悬停处理程序永久绑定 - 这是一个非常通用的示例(替换您自己的选择器和处理):

$(document).ready(function() {

   var hoverEnabled = true;

   $("someselector").hover(
      function() {
         if (!hoverEnabled)
            return;

         // actual mouse enter processing here
      },
      function() {
         if (!hoverEnabled)
            return;

         // actual mouse leave processing here
      }
   );

   $("someotherselector").on("some event", function() {
      hoverEnabled = false;
   });

   $("someotherselector").on("some other event", function() {
      hoverEnabled = true;
   });
});

显然,此技术适用于您要暂时禁用的任何事件(也可用于临时“禁用”setInterval处理),当然您不必使用.on() ,你可以使用.click()或任何合适的东西。