2011-07-10 60 views
0

我使用了一个全局变量,它在鼠标输入的div上切换true和false,然后我使用其他位置的值来显示/隐藏另一个元素,具体取决于值。元素鼠标的名称是徘徊

其实,另一种做我想做的事的方法是知道鼠标是否悬停在名为MyDiv的div上。 我期待删除使用mouseenter/mouseleave事件切换的全局变量。

我尝试这样做:

var test = $('#MyDiv').mouseover() ? 1 : 0; 

,但它不工作。

让我知道你是否有1-liner建议返回被徘徊的div的名称。

谢谢。

PS:我已经知道它可以拥有超过1行完成

+0

你想知道鼠标目前在无需增加其元素每个元素的悬停处理程序? –

+0

这是正确的。 – frenchie

回答

2

可以储存您的标志jQuery的数据存储:

$(this).data("mouseover", true); 
if ($(this).data("mouseover")) 
+0

这仍然存储一些价值;我正在查看是否jQuery让你确定div的名字被徘徊。看起来不可能。 – frenchie

1

你可以这样做:

$('#MyDiv').mouseover(function(){ 
    //show/hide other div or any other code 
}) ; 

OR

您可以设置另一个全局变量,告诉你是否鼠标徘徊在MyDiv这样的:

$('#MyDiv').mouseover(function(){ 
    myDivHovering = true; 
}).mouseout(function() { 
    myDivHovering = false; 
}) ; 
+0

显示/隐藏在SetTimeout内工作;因此我需要知道时间到的时候鼠标的位置,而不是鼠标进入或离开时的位置。 – frenchie

+0

看到我的更新设置全局变量 – Mrchief

+0

正确,但我希望使它在没有全局变量的情况下工作(该功能目前已经与全局变量一起工作)。任何方式来确定被徘徊的div的名称? – frenchie

1

jQuery使用一个callba CK风格来处理事件。您所描述的功能可以实现像这样:

var mouse_on_mydiv = false; 
$('#MyDiv').hover(function onMouseIn() { 
    mouse_on_mydiv = true; 
    alert(this.id); // => 'MyDiv' 
}, function onMouseOut() { 
    mouse_on_mydiv = false; 
}); 
+0

是的,这已经是我使用全局变量了。我正在寻找删除全局变量。 – frenchie

+0

我不知道这里的背景。什么阻止你移除它?它是否被用于你想要重构的代码的其他部分? –

+0

全局变量没有被其他地方使用,一切正常。这只是我想要删除变量。 – frenchie