如果鼠标离开或调用span,jquery会隐藏div

时间:2011-10-18 15:10:49

标签: jquery hide mouseout

修改

我仍然无法让这个工作....

我已经尝试过下面的代码,当它在页面上工作时,它不适用于div和span我希望它能够工作...

如果您转到2hon5.net,您可以看到代码正常工作,它会通过2hon5.net/js/2hon5.js处的代码显示弹出窗口:

 $("#wordInf").css({'display':'block'}); 

(默认隐藏) 你可以看到我在那里尝试的所有代码,任何人都可以看到我的代码中的内容是阻止弹出消失吗?

结束修改

我尝试了很多解决方案,包括这个:similar question I couldn't get working我有一个信息弹出窗口,显示动态信息,具体取决于它悬停在哪个范围内。我设置好它会直接弹出当前跨度。如果调用范围或div本身不再悬停(因为它有链接),我希望它在一小段延迟后消失。我没有运气,有什么建议吗?

<span onmouseover='callHover(code1234,this)' class='code 1234'>The calling span</span>
<span onmouseover='callHover(code1235,this)' class='code 1235'>The calling span</span>

被叫div是:

<div id="codeInf" >
<span id="code_id">generated code here</span>
<a href="#">link 1</a>
<a href="#">link 2</a>
<a href="#">link 3</a>
<a href="#">link 4</a>
</div >

调用div的jquery是:

$("#codeInf").mouseover(showCode);
var showCode = function(ev) {
  var pos = $("#codeInf").offset();  
  var width = $("#codeInf").width();

  $("#codeInf").css( { "left": (pos.left + width) + "px", "top":pos.top + "px" } );
  $("#codeInf").show();
}

我尝试了与上述相关的问题中的代码,但它不起作用 - 也许是因为我调用代码的方式?

我想要的结果是如果调用范围或codeInf div不再被覆盖,将隐藏代码的代码,一个div可以被调用到许多不同的跨度,所以我不希望延迟的hide影响它是否被另一个跨度调用。

提前感谢任何建议。

标记

3 个答案:

答案 0 :(得分:1)

查看jQuery的hover documentation

示例:

$("li").hover(function () {
    // focus
}, function () {
    // lost focus
});

答案 1 :(得分:1)

简单的做法是在span和popup的div中添加mouseleave。

      $("span").hover(function() {
          // hide all other divs
          $("div").slideDown("slow");
      });

      function hidepanel() {
          if ($('div').is(':hover') === false) {
              $('div').slideUp(); 
          }
      }

      $('div').mouseleave(function() { setTimeout(hidepanel, 4000); });
      $('span').mouseleave(function() { setTimeout(hidepanel, 4000); });

http://jsfiddle.net/8CRVX/

答案 2 :(得分:1)

这不是一个完美的结果,但我通过在调用和生成的div中添加一个onmouseout'hideChar()来解决了这个问题。

瘦我做了一个bool来将div设置为悬停或不悬停:

var isWordHover=new Boolean(0);
var isCharHover=new Boolean(0);

function charHover2(){
isCharHover=Boolean(1);
setTimeout(HC, 4000);
}

我设置它使mouseout上的值为0,鼠标悬停时为1。需要弄清楚一些错误(有时它不会把鼠标拿出来等等......但是它会隐藏弹出窗口,并且能够将鼠标悬停在上面并点击链接。

感谢所有的建议。

标记