Javascript 返回false不工作

Javascript 返回false不工作,javascript,jquery,Javascript,Jquery,有人能告诉我为什么return false不起作用吗?我只想检查电流是否为黄色。如果是黄色类,则不执行任何操作(返回false)。问题是,当你点击一个按钮时,它会再次运行,但我想避免这种情况。 给你 问题在于,您将从回调返回false到动画,而不是事件回调 如果在第二次单击时,您所寻找的是什么都没有发生,那么您可以移动条件并在单击回调的前面返回false: $('.yellowcontroll').click(function(){ /* MOVE THIS TO THE BEGINN

有人能告诉我为什么
return false
不起作用吗?我只想检查电流是否为黄色。如果是黄色类,则不执行任何操作(返回false)。问题是,当你点击一个按钮时,它会再次运行,但我想避免这种情况。 给你


问题在于,您将从回调返回false到动画,而不是事件回调

如果在第二次单击时,您所寻找的是什么都没有发生,那么您可以移动条件并在单击回调的前面返回false:

$('.yellowcontroll').click(function(){

    /* MOVE THIS TO THE BEGINNING OF THE CLICK CALLBACK */    
    if($('.current').is($('.yellow'))){
        return false;
    }

    if($yellow.after('.current').length){
        $('.yellow').show();
        $('.slideswrapper:not(:animated)').animate({'marginLeft':'-=100'},1000,function(){
            $('.current').removeClass('current').hide();
            $('.yellow').addClass('current');
            $('.slideswrapper').css({'margin-left':'0px'});

            if($('.current').is($('.slideswrapper div:last'))){
                $('.blue,.green,.red').clone().insertAfter('.slideswrapper div:last');
            }

            if($('.current').is($('.red'))){
                $('.red').prevAll().remove(':not(.yellow)');
                $('.yellow').insertAfter($('.slideswrapper div:last'));
            }
        });
    }

});

问题在于,您将从回调返回false到动画,而不是事件回调

如果在第二次单击时,您所寻找的是什么都没有发生,那么您可以移动条件并在单击回调的前面返回false:

$('.yellowcontroll').click(function(){

    /* MOVE THIS TO THE BEGINNING OF THE CLICK CALLBACK */    
    if($('.current').is($('.yellow'))){
        return false;
    }

    if($yellow.after('.current').length){
        $('.yellow').show();
        $('.slideswrapper:not(:animated)').animate({'marginLeft':'-=100'},1000,function(){
            $('.current').removeClass('current').hide();
            $('.yellow').addClass('current');
            $('.slideswrapper').css({'margin-left':'0px'});

            if($('.current').is($('.slideswrapper div:last'))){
                $('.blue,.green,.red').clone().insertAfter('.slideswrapper div:last');
            }

            if($('.current').is($('.red'))){
                $('.red').prevAll().remove(':not(.yellow)');
                $('.yellow').insertAfter($('.slideswrapper div:last'));
            }
        });
    }

});

你手中的代码乱七八糟,但基于你的问题,你似乎只是把逻辑放错了地方。尝试将
返回false
逻辑置于单击事件的顶部:

$('.yellowcontroll').click(function(){
    if($('.current').is($('.yellow'))){
        return false;
    }
    ...
  });

你应该做你想做的事。

你的小提琴里的代码乱七八糟,但基于你的问题,你似乎只是把逻辑放错了地方。尝试将
返回false
逻辑置于单击事件的顶部:

$('.yellowcontroll').click(function(){
    if($('.current').is($('.yellow'))){
        return false;
    }
    ...
  });

应该做你想做的。

我想你应该把代码片段放在点击处理程序的开头:


我想您应该将该代码段放在click处理程序的开头:


将条件假代码移动到单击处理程序的开头,如下图所示,并使用
hasClass
如下图所示


将条件假代码移动到单击处理程序的开头,如下图所示,并使用
hasClass
如下图所示


您是否尝试过在希望返回false的行中添加console.log()?它是否到达了代码的这一部分?请在发布之前格式化代码,以便我们更容易阅读和理解。您是否尝试过在希望返回false的行上添加console.log()?它是否达到了你的代码的那一部分?请在你发布之前格式化你的代码,以便我们更容易阅读和理解。不确定你想做什么。。。我将使用一种可能性进行更新。我已使用一种可能的解决方案进行了更新,但我无法确定这是否是预期的行为…THX!!普雷斯托尔:这正是我想要的:)我真愚蠢,竟然把我的逻辑放在最后……我还在学习,所以谢谢你!!没问题!很高兴能帮上忙。不太清楚你想做什么。。。我将使用一种可能性进行更新。我已使用一种可能的解决方案进行了更新,但我无法确定这是否是预期的行为…THX!!普雷斯托尔:这正是我想要的:)我真愚蠢,竟然把我的逻辑放在最后……我还在学习,所以谢谢你!!没问题!很高兴能帮忙。
    if ($('.current').hasClass('yellow')) {
        return false;
    }
if($('.current').is('.yellow')){
    return false;
}