【问题标题】:Keep checking condition instead of one - time checking in jquery/ js保持检查条件而不是一次性检查 jquery/js
【发布时间】:2012-12-22 10:21:07
【问题描述】:

我想要实现的是当鼠标没有悬停menu3时,系统会不断检查aboutMenu是否悬停,如果是则alert 'h',否则alert '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');
}); 

【问题讨论】:

  • 为什么即使在moueout中也悬停??? (这没有意义-imo)
  • 更新问题,请看

标签: javascript jquery if-statement hover


【解决方案1】:
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);
}); 

【讨论】:

    【解决方案2】:

    定期检查悬停状态是否可行?

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-11
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多