Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery使用animate上下滑动不会停止滑动_Javascript_Jquery_Event Bubbling - Fatal编程技术网

Javascript jquery使用animate上下滑动不会停止滑动

Javascript jquery使用animate上下滑动不会停止滑动,javascript,jquery,event-bubbling,Javascript,Jquery,Event Bubbling,我有一张照片,上面有一些内容(名称、描述、价格),内容是ul的。在默认状态下,ul仅通过设置ul朝向图像底部的绝对位置来显示名称,然后使用掩码div隐藏溢出。然后,当您将鼠标悬停在ul上时,只要您停留在图像上,ul就会向上滑动显示整个信息。鼠标移出时,它会滑回初始位置,只显示标题。。。这就是它的工作原理。现在,当你将鼠标悬停时,它会上下滑动,永远上下滑动 下面是html和样式 div.banner_product { float: left; width: 236px; positio

我有一张照片,上面有一些内容(名称、描述、价格),内容是ul的。在默认状态下,ul仅通过设置ul朝向图像底部的绝对位置来显示名称,然后使用掩码div隐藏溢出。然后,当您将鼠标悬停在ul上时,只要您停留在图像上,ul就会向上滑动显示整个信息。鼠标移出时,它会滑回初始位置,只显示标题。。。这就是它的工作原理。现在,当你将鼠标悬停时,它会上下滑动,永远上下滑动

下面是html和样式

div.banner_product {
    float: left; width:  236px; position:  relative; overflow: visible;
}
div.banner_product ul {
    width:  220px;
    background-color: black;
    font-size: 16px;
    color:  white;
    list-style-type: none;
    position: absolute; top:  230px;

    margin: 8px;
    filter: alpha(opacity=70); /* internet explorer */
        -khtml-opacity: 0.7;      /* khtml, old safari */
        -moz-opacity: 0.7;       /* mozilla, netscape */
        opacity: 0.7;           /* fx, safari, opera */

}
.mask {
position: absolute;
top: 0;
overflow: hidden;
height:  300px;
width:  235px;
}


/*html*/
<div class="banner_product" id="pi1"><img src="image1.jpg" alt="" border="0" height="306" width="235" /><div class="mask">
        <ul id="bd1">
            <li class="name-b"><a href="#">PRODUCT NAME</a></li>
            <li class="text-b">DESCRIPTION</li>
            <li class="price-b">PRICE</li>
        </ul></div>
    </div>
我认为每次#bd1穿过鼠标指针(大概是在图像上方悬停)时,它都会调用mouseout,然后在经过时调用mouseover

要测试这一点,请通过指向图像的最底部激活动画,然后立即将鼠标移开

编辑:

嗯。。。对我来说,如果我确保横幅不会越过指针,这会有所帮助,但当然这不是解决办法

一种解决方案似乎是使用jQuery的hover()方法,而不是特定的鼠标事件:

$('#pi1').hover(
    function (event){
        $('#bd1').animate({"top": "4px"}, 500);
    },

    function (event){
        $('#bd1').animate({"top": "236px"}, 500);
    });
无论如何,它在webkit中工作。我还没有测试IE

var state = true;
    $('#pi1').hover(function(){
        if(state){
            $('#bd1').slideDown('slow',function(){
                state = false;
            });
        }
    },function(){
        if(!state){
            $('#bd1').slideUp('slow',function(){
                state = true;
            });
        }
    }) 
使用jquery slideUp()和slideDown()以及悬停事件停止redandent上下移动。。。
这实际上可以在使用mouseover和mouseout事件的任何地方使用…

从技术上讲,“绑定”确实有效。只是效果太好了。不过,我不知道为什么“悬停”可以解决这个问题。必须进行某种内部检查,以确保在设置动画或其他内容时不会重复发射。很高兴它对你有用。
var state = true;
    $('#pi1').hover(function(){
        if(state){
            $('#bd1').slideDown('slow',function(){
                state = false;
            });
        }
    },function(){
        if(!state){
            $('#bd1').slideUp('slow',function(){
                state = true;
            });
        }
    })