2013-02-02 44 views
0

我想在鼠標懸停在另一個DOM元素上時顯示div,但如果在顯示div之前移動鼠標,我想取消此操作。到目前爲止,這是我Jquery懸停取消操作

HTML

<div id="msg"> 
    <a href="#" id="33"> HERE </a> 
</div> 

JS

var timer; 
$("body").on('mouseenter', '#msg a',function(){ 
    var userHover = $(this).attr("id"); 
    timer = setTimeout(function() { 
     alert(userHover); 
    }, 1000); 
}).on('mouseleave', '#msg a', function(){ 

}); 

http://jsfiddle.net/Nyrdz/

任何幫助表示讚賞。

+1

你只是想清除超時?在這種情況下'clearTimeout(timer)'應該做的訣竅...... –

+0

好吧,它更像是如果用戶在div彈出之前將鼠標從'a'元素移開,div不會顯示,div當然要顯示的是其他地方的信息框。清除超時會否取消此呼叫?只是想清楚謝謝。 – kabuto178

回答

3

您正在尋找clearTimeout()

var timer; 
$("body").on('mouseenter', '#msg a', function(){ 
    var userHover = $(this).attr("id"); 
    timer = setTimeout(function() { 
     alert(userHover); 
    }, 1000); 
}).on('mouseleave', '#msg a', function(){ 
    clearTimeout(timer); 
}); 

但是,如果你有一個以上的元件匹配#msg a我強烈建議你存儲在特定元素的數據timer值。

$("body").on('mouseenter', '#msg a', function(){ 
    var userHover = $(this).attr("id"); 
    $(this).data('timer', setTimeout(function() { 
     alert(userHover); 
    }, 1000)); 
}).on('mouseleave', '#msg a', function(){ 
    clearTimeout($(this).data('timer')); 
}); 
+0

是的,在#msg中有多個'a'元素 – kabuto178

+0

感謝它適合我目前的問題:) – kabuto178