2012-12-22 34 views
0

我該如何創建一個元素的操作,當用戶不在它上面時會改變它。 mouseovermouseleave不能應用在這種情況下,因爲該元素在頁面加載時被激活並且鼠標位置可以在元素之外。JavaScript/jQuery不在元素上

這裏的條件:

if mouse is not over element: 
    close element 
else: 
    do nothing 

所以我想知道的是我怎麼能與jQuery/JavaScript的檢查,如果當前鼠標的位置是不特定的元素。

謝謝!

+1

那麼爲什麼不初始化它隱藏並使用'mouseover()'來顯示它呢? –

+0

這是一個下拉菜單,當頁面刷新時,這個下拉菜單保持下降。在刷新期間,如果用戶將鼠標移出下拉框,它將不會關閉。 – dark4p

+0

頁面刷新?你在談論整頁重新加載嗎?爲什麼你會擔心頁面重新加載時看起來像什麼?也許我錯過了一些重要的線索;-) –

回答

2

你可以綁定的事件處理程序的身體和檢查請求的目標:

$().ready(function() { 
    $("body").on('mouseover',function(event) { 
     if($(event.target).attr('id') === 'yourid') { 
      console.log('do close this element'); 
     } else { 
      console.log('do nothing'); 
     } 
    }); 
}); 
1

我會使用一個全局布爾值來跟蹤鼠標是否在當前盤旋在元素上。然後,您可以定期檢查使用setInterval(具有一定合理的時間間隔)的布爾值,這將決定該元素是否應該隱藏。

var mouseIsOver = false; 

$('#elementId').hover(
    function() { 
    mouseIsOver = true; 
    }, 
    function() { 
    mouseIsOver = false; 
    } 
); 

setInterval(function() { 
    if (mouseIsOver == false) { 
    $('#elementId').fadeOut(); 
    } 
}, 250);