2017-04-10 62 views
2

我有這樣的jQuery:停止jQuery的運行,當鼠標懸停在框上的頁面加載

jQuery('.slidey').on('hover',function(){ 
    if (jQuery(window).width() > 1151) { 
    jQuery(this).children('.post-content').stop().slideToggle(180); 
}}); 

不過,我遇到了在那裏,如果我加載頁面的一個問題,我的鼠標已經在滑動盒的位置,然後盒子會向上滑動,撥動開關將倒轉...所以 - 當我懸停播放時,我想要顯示的切換狀態,當我沒有懸停時,它隱藏,當我這樣做,而是比其他方式..!

如何讓jQuery忽略鼠標,如果它已經被定位在頁面加載上,以阻止該切換被反轉?我在這裏查看了其他問題,並且解決方案似乎不起作用。

希望你能幫上忙。

回答

0

鑑於規範.hoverhere,我會建議使用兩個hoverIn和hoverOut,然後而是採用slideToggle,使用slideDownslideUp如:

jQuery('.slidey').hover( 
    function(){ 
    if (jQuery(window).width() > 1151) { 
     jQuery(this).children('.post-content').stop().slideDown(180); 
    } 
    }, 
    function(){ 
    if (jQuery(window).width() > 1151) { 
     jQuery(this).children('.post-content').stop().slideUp(180); 
    } 
    } 
); 

而且,這裏See Additional Notes發現:

在jQuery 1.8中不推薦使用,在1.9中刪除:名稱「hover」用作字符串「mouseenter mouseleave」的簡寫。它爲這兩個事件附加一個事件處理程序,處理程序必須檢查event.type以確定該事件是mouseenter還是mouseleave。不要將「懸停」僞事件名稱與接受一個或兩個函數的.hover()方法混淆。

+0

非常好!非常感謝你,這個解決方案非常完美。雖然我有點困難,但是你能否幫我解決這個問題?我看了一下spec,我發現'.hover'函數由第一個'mouseIn'和第二個'mouseOut'組成。所以如果我理解正確的話,你爲我寫的代碼意味着當鼠標進入時,它滑落,當它離開時,它應該滑動,當然,情況並非如此......你能清理到哪裏我錯了嗎?再次感謝您的解決方案,非常感謝您的幫助。 –

+0

@SamBrown - 檢查你的窗口寬度。我必須減少檢查值才能使其工作。這裏是一個[小提琴](https://jsfiddle.net/5h5rc95x/1/)幫助說明發生了什麼。 – Forty3