继续检查条件,而不是一次性检查jquery / js

时间:2012-12-22 10:21:07

标签: javascript jquery if-statement hover

我想要实现的是当鼠标没有悬停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');
}); 

2 个答案:

答案 0 :(得分: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);
}); 

答案 1 :(得分:1)

定期检查hoverstate会不会是一个想法?

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

$(document).ready(chkhover);

jsfiddle。顺便说一下,它也展示了一种仅限CSS的解决方案。