Javascript 是否可以在悬停时根据条件取消悬停事件?

Javascript 是否可以在悬停时根据条件取消悬停事件?,javascript,jquery,function,hover,Javascript,Jquery,Function,Hover,我需要使执行函数的悬停事件根据边距顶部的条件停止运行该函数 这是我的小提琴- 在我眼睛血管破裂之前,请帮帮我: 谢谢。我只是在看你的JS提琴,虽然我不确定你希望停留在什么值上,但下面是我用来让它工作的代码: JS: JSFiddle: 请让我知道这是否对您有效!: “基于边距顶部的条件”是什么意思?我的函数通过调整容器“边距顶部”使我的有色黑色div上下移动,具体取决于您悬停在哪个黑色div上。我需要的是,悬停停止执行函数,例如,为了参数,“margin top”为“0px”或“margin t

我需要使执行函数的悬停事件根据边距顶部的条件停止运行该函数

这是我的小提琴-

在我眼睛血管破裂之前,请帮帮我:


谢谢。

我只是在看你的JS提琴,虽然我不确定你希望停留在什么值上,但下面是我用来让它工作的代码:

JS:

JSFiddle:


请让我知道这是否对您有效!:

“基于边距顶部的条件”是什么意思?我的函数通过调整容器“边距顶部”使我的有色黑色div上下移动,具体取决于您悬停在哪个黑色div上。我需要的是,悬停停止执行函数,例如,为了参数,“margin top”为“0px”或“margin top”为“450px”。mouseleave停止函数,但我无法在悬停mouseenter时根据条件确定如何停止函数。这是设计中存在的一些问题,由于使用魔法值来知道何时开始和停止。明确定义为变量的阈值远远不是魔法数字。如果我只输入607和0内联,我会认为你的评论是有效的。此外,选择的值是通过利用个体JSFIDLE的实验选择的。我清楚地指出,我不知道个人希望在哪里停止动画,所以我让它在示例列表末尾停止一帧。提出问题的人可以根据自己的喜好调整阈值逻辑。但是,答案符合请求的标准。IrishGeek82-是!非常感谢。逻辑就像我需要的那样工作,我现在可以专注于使它在视觉上更具吸引力。再说一次,我真是太感谢你了!
$(document).ready(function(){

function moveUp(){
$('#a').animate({
    "margin-top" : "-=" + 30},200, "linear", moveUp);
};
/*  $('.up').hover(function(){
    if ($m =='0px'){
    alert('stop');
    }
    else{
        moveUp();
    }
});
*/
$('.up').hover(function(){
    moveUp();
},
function(){
    $('#a').stop();
});


//---------------------------------------

function moveDown(){
$('#a').animate({
    "margin-top" : "+=" + 30},200, "linear", moveDown);
};
$('.down').hover(function(){
    moveDown();
},
function(){
    $('#a').stop();
});

});
    var upperThreshold = -607;
    var lowerThreshold = 0;
    function moveUp()
    {
        if ($("#a").css("marginTop").replace(/px/,'') <= upperThreshold)
        {
            console.log($("#a").css("marginTop"));
            $('#a').stop();
            return false;
        }
        else
        {
            $('#a').animate({"margin-top" : "-=" + 30},200, "linear", moveUp);
        }
    }

    function moveDown()
    {
        if ($("#a").css("marginTop").replace(/px/,'') >= lowerThreshold)
        {
            console.log($("#a").css("marginTop"));
            $('#a').stop();
            return false;
        }
        else
        {
            $('#a').animate({"margin-top" : "+=" + 30},200, "linear", moveDown);
        }        
    }

$(document).ready(function()
                  {

                      $('.down').hover(function()
                                       {
                                           moveDown();
                                       },
                                       function()
                                       {
                                           $('#a').stop();
                                       }
                                      );

                      $('.up').hover(function()
                                     {
                                        moveUp();
                                     },
                                     function()
                                     {
                                        $('#a').stop();
                                     }
                                    );
});