2017-04-10 72 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