有人可以告诉我为什么return false
无效吗?我只想检查电流是否为黄色。如果是黄色类则不要做任何事情(返回false)。问题是当你点击一个按钮它再次运行它的东西但我想避免这种情况。
这是the Fiddle of the problem。
/*INSIDE THIS CODE RETURN FALSE NOT WORKING!!*/
$('.yellowcontroll').click(function(){
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'));
}
/*THIS IS NOT WORKING AS EXPECTED!!*/
if($('.current').is($('.yellow'))){
return false;
}
});
}
});
答案 0 :(得分:2)
问题是你从回调到动画返回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'));
}
});
}
});
答案 1 :(得分:1)
你小提琴中的代码很乱,但根据你的问题,你似乎只是把你的逻辑放在了错误的地方。尝试将return false
逻辑放在点击事件的顶部:
$('.yellowcontroll').click(function(){
if($('.current').is($('.yellow'))){
return false;
}
...
});
This fiddle应该做你想做的事。
答案 2 :(得分:1)
我认为您希望将该代码段放在点击处理程序的开头:
http://jsfiddle.net/mihaifm/3YLEg/2/
$('.yellowcontroll').click(function(){
/*THIS IS NOT WORKING AS EXPECTED!!*/
if($('.current').is($('.yellow'))){
return false;
}
答案 3 :(得分:1)
将条件假代码移动到点击处理程序的开头,如下所示,并使用hasClass
,如下所示。
if ($('.current').hasClass('yellow')) {
return false;
}
答案 4 :(得分:1)
if($('.current').is('.yellow')){
return false;
}