如果Mouseover Div等于False - JQuery / Javascript

时间:2011-03-23 20:51:20

标签: javascript jquery

我正试图让它发挥作用:

if($('#myDiv').hover() == false) {
  myFunction();
}

Chrome或Firebug控制台中的错误并没有太大影响。我已经看了一些其他帖子,并且有一个答案使用了类似的东西:

if($('#myDiv').is(':hover') == false) {
  myFunction();
}

然而,这也行不通。

如果有帮助的话,这是一个jsfiddle:http://jsfiddle.net/yuwPR/2/

任何想法都非常感激。

由于

修改

感谢您的回答,我无法获得任何工作。我想这可能是不可能的。哦,我会尝试其他的东西!

再次感谢

P.S。最具创造性的答案标记为正确并且全面支持。

4 个答案:

答案 0 :(得分:2)

在不知道您的最终意图的情况下,您可以在document上悬停并检查当前target.id

$(document).mouseover(function(event) {
    if (event.target.id == "myDiv") {
        $("body").css("background-color", "red"); //over the div so change the color
        return;
    }
    $("body").css("background-color", "green"); //no on the div
});

jsfiddle上的代码示例。

答案 1 :(得分:1)

悬停功能需要2个回调函数:

('#myDiv').hover(function () {
        // function to call when hovering 
    }, 
    function () { 
        myFunction(); 
    }
);

因此,当鼠标悬停为“假”时,即鼠标输出时,将调用第二个函数。

如果您只想在悬停停止时做某事,可以使用mouseout()功能:

$('#myDiv').mouseout(function() {
        myFunction();
    }
);

答案 2 :(得分:1)

你的第一个电话永远无法运作:

$('#myDiv').hover()

这实际上说"触发元素"上的hover事件。它不会检查您的用户当前是否将鼠标悬停在该元素上。

你的第二个表述应该有效:

$('#myDiv').is(':hover')

这将检查元素当前是否有鼠标悬停在它上面。但是,它似乎不适用于文档加载。可以看到一个有效的例子here。如果您可以澄清您尝试做的事情,可能会找到一些这种风格的工作代码。

答案 3 :(得分:1)

此代码示例设置一个全局js变量来存储div的悬停状态。然后我使用jquery悬停在true / false之间切换。然后,我们每10ms启动一次检查悬停状态的函数。目前,我只是设置窗口状态,告诉您是否徘徊。

var _MOUSEOVER_IN_PROGRESS = false; //stores the hover state
function isover(){
    if(_MOUSEOVER_IN_PROGRESS){
        window.status = 'Still over!';
    } else {
        window.status = 'You are not hovering on me!';
    }
    setTimeout("isover()",10); //checking every 10ms! 
}



$(document).ready(function(){
    isover();
    $('#mydiv').hover(
        function(){ _MOUSEOVER_IN_PROGRESS = true; }, 
        function(){ _MOUSEOVER_IN_PROGRESS = false; }
    );
});

编辑我的代码!我的mydiv悬停捕获没有包装在准备好的文件中