2013-04-12 28 views
3

我有一個正在運行的事件,檢查是否在POSTED之後使用on事件懸停鏈接。jQuery'on'事件,檢查是否爲

$(document).on("mouseenter","#hover",function() { 
    load(); 

    $("#sidebar").fadeToggle("slow"); 
    $("#sidebar").html(''); 

    $.post("ajax_search.php?type=sidebar", { sidebar : $("#search").val() }, function(get_data) { 
     stop_load(); 

     $("#sidebar").html(get_data); 
    }); 
}); 

問題

我如何使它所以當你停止徘徊#hover#sidebar會隱藏? 我發佈了#hover,這就是爲什麼我使用ON事件。

有沒有像notOn

謝謝!

+0

jQuery的'mouseout'或'mouseleave'事件可能會有所幫助。 http://api.jquery.com/mouseout/ – showdev

+0

首先,**'.on()'不是一個事件**。 '.on()'是一個允許標準化附加事件處理程序的jQuery方法。在上面的代碼中,'mouseenter'是事件。 –

回答

5

不,沒有notOn

但是有一個對應mouseentermouseleave

$(document).on("mouseenter","#hover",function() { 
    $("#sidebar").fadeToggle("slow"); 
}); 
+0

愚蠢的我,你是絕對正確的。謝謝!不知道有沒有mouseleave ^^。 –

2

什麼你尋找它是一個hover事件,它允許您使用兩個事件處理一個鼠標輸入等當鼠標離開,

另一種方式來完成它像

$(".selector").on(
{ 
mouseenter: function() 
{ 
    //stuff to do on mouseover 
}, 
mouseleave: function() 
{ 
    //stuff to do on mouseleave 
} 
}); 
+0

我可能不是正確的,但我認爲他正在使用.on(),因爲他動態地添加了元素,並且通過動態添加的內容懸停播放了很多內容。 (可能是錯誤的) – iConnor

+0

+1用於編輯 – iConnor

1

嘗試使用鼠標事件:

$(document).on("mouseleave","#hover",function() { 
     //Code required to hide the sidebar. 
}); 

You mig還想考慮懶惰地執行你的ajax調用,緩存結果,並確保它只加載一次。

另外,不要依賴切換的方法。我會明確地在mouseenter和mouseleave上使用fadeIn和fadeOut,以防事件解決的順序變得滯後。

1

沒有notOn方法。但在以下示例中,mouseout函數的行爲與您要查找的notOn相同。這裏有一個例子:

$('#hover').on({ 
    mouseenter: function(){ 
     // perform operations when you're hovering on #hover element 
     $('#sidebar').fadeIn(); 
    }, 
    mouseout: function(){ 
     // perform operations when you stop hovering over #hover element  
     $('#sidebar').fadeOut();  
    } 
});