6

我想要实现的是当鼠标没有悬停menu3时,系统会不断检查aboutMenu是否悬停,如果是,则警报'h',否则警报'nh'。问题是鼠标离开menu3时只检查一次,如何解决这个问题?谢谢。

$('#menu3').live('mouseout',function() {

$("#aboutMenu").hover(function() {
    $(this).data("hovered", true);
}, function() {
    $(this).data("hovered", false);
}); 

if ( $("#aboutMenu").data("hovered") ) {
    alert ('h');
} else {
    alert ('nh');
}
});

更新:

或者另一种方法是系统不断检查 menu3 或 aboutMenu 是否悬停,如果不是,则弹出悬停消息。但是,这只会在页面初始化时运行一次,如何让它保持检查?谢谢

$(document).ready(function() {
$("#aboutMenu,#menu3").hover(function() {
$(this).data("hovered", true);
}, function() {
    $(this).data("hovered", false);
}); 

if ( $("#aboutMenu,#menu3").data("hovered") ) 
alert ('hovered');
}); 
4

2 回答 2

4
function checkHover() {
  if ($("#aboutMenu,#menu3").hasClass("hovered")) {
    alert ('hovered');
    //other stuff if hovered
  }
  else {
    //other stuff if not hovered
  }
}

$(document).ready(function() {
  $("#aboutMenu,#menu3").hover(function() {
    $(this).addClass("hovered");
  }, function() {
    $(this).removeClass("hovered");
  }); 

  setInterval(checkHover, 1000);
}); 
于 2012-12-22T11:01:06.370 回答
1

定期检查悬停状态是个好主意吗?

function chkhover(){
    if ($('#aboutMenu').is(':hover')){
        alert('#aboutMenu hoverstate is: hovered');
    }
    setTimeout(chkhover, 500);
}

$(document).ready(chkhover);

看到这个jsfiddle。顺便说一下,它也演示了一个纯 CSS 的解决方案。

于 2012-12-22T11:00:08.417 回答