2012-04-10 9 views
0

誰かがなぜreturn falseが動作しないのか教えていただけますか?私は、電流が黄色であるかどうかをチェックしたい。それが黄色のクラスであれば何もしません(falseを返します)。問題は、ボタンをクリックしてそのボタンを再度実行するときですが、私はそれを避けたいと思います。 ここはthe Fiddle of the problemです。返信falseが動作しない

/*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

あなたは偽を返すように期待してライン上にconsole.log()を追加したことがありますか?あなたのコードのその部分に到達していますか? –

+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')); 
      } 
     }); 
    } 

}); 
+0

どうすれば解決できますか? –

+0

あなたがしようとしていることは本当にわかりません...私は1つの可能性で更新します。 – Prestaul

+0

私は1つの可能な解決策で更新しましたが、これが意図された動作であることを確信できません。 – Prestaul

1

あなたのフィドルのコードあなたの質問に基づいて、あなたは間違った場所にあなたのロジックを持っているようです。あなたのクリックイベントの一番上にreturn falseロジックを配置してみてください。

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

This fiddleは、あなたが欲しいものを行う必要があります。

http://jsfiddle.net/mihaifm/3YLEg/2/

$('.yellowcontroll').click(function(){ 
      /*THIS IS NOT WORKING AS EXPECTED!!*/  
      if($('.current').is($('.yellow'))){ 
       return false; 
       } 
1

は、私はあなたのクリックハンドラの先頭でそのコードスニペットを入れたいと思います以下のように。

DEMO

if ($('.current').hasClass('yellow')) { 
     return false; 
    } 
1

移動以下とhasClassを使用するなどのクリックハンドラの先頭に条件付きの偽コード:

1
if($('.current').is('.yellow')){ 
    return false; 
} 
関連する問題