2016-07-22 8 views
-1

これは簡単なはずですが、私は明らかにここではっきりと何かを見逃しています。jQueryループを破る

次のコードでは、コンテンツがあるかどうか、またはクラスがあり、関数error()を実行しているかどうかを確認する必要があります。これは真実で間違っているようですが、これは非常に混乱しています!

私はループに何が欠けている?私はreturn false;がその機能を停止することを期待していただろうが、それはしない。ここで

function error() { 
    jQuery("#overlay,#required").fadeIn(); 
    jQuery(this).addClass("error"); 
} 

// Step 1 

jQuery("#step-1-next").click(function(){ 

    jQuery('#step-1 .b-left input[name=name], #step-1 .b-left input[name=email], #step-1 .b-left input[name=tel], #step-1 .b-left input[name=company]').each(function() { 

     if (jQuery(this).val() == '' || jQuery(this).hasClass("error")) { 

      error(); 
      return false; 

     } else { 

      // continue 

     } 

    }); 

}); 
+0

'私は期待していただろう偽;機能を停止するには、 'それはどのようにデバッグするのですか? –

+0

「真実で偽であり、同じ時である」とはどういう意味ですか?ボタンをクリックするとどうなりますか?代わりに何が起こると思いますか? – JJJ

+0

_'私は、返品が偽であると予想していたでしょう。機能を停止する '_ ...いいえ! 'error();'関数は 'jQuery(this) 'が何であるかを知らないので、そこで停止します。 – Jai

答えて

0

あなたはまだ多分

if (jQuery(this).val() == '' || jQuery(this).hasClass("error")) { // true if element has a class error 

error(); // it already has class error, but method sets it again. If possible, reflow code 
.... 

そして、一つのことを検討する必要があることを、コードで奇妙な場所です:あなたは、ループが適切なタイミングで停止しそうかどうかを調べることができます。ちょうどトレースのような線を追加してください:

error(); 
console.log('Bad input with name ' + $(this).attr('name')); 
return false;