2016-04-07 9 views
1

こんにちはstackoverflowコミュニティ。私は "あまりにも多くの再帰"エラーで助けが必要です。私は、これらの機能を実行するとき、それは奇妙な、来るが、すべてが正常にだけエラーを作品:ツリー内の再帰エラーが多すぎます

function check_checker (siblings, status) { 
    if (siblings) { 
     if (status == true) { 
      $(siblings).children('li.imCheckbox').children('input').prop("checked", true); 
      if ($(siblings).children('ul')) { 
       check_checker($(siblings).children('ul'), true); 
      }           
     } else { 
      $(siblings).children('li.imCheckbox').children('input').prop("checked", false); 
      if ($(siblings).children('ul')) { 
       check_checker($(siblings).children('ul'), false); 
      }           
     } 
    } 
} 
$(document).ready(function(){ 
    $('body').on('click', 'input[name=impTaskCh]', function(){ 
     if ($(this).is(':checked')) { 
      var siblingas = $(this).parent().siblings('ul'); 
      check_checker(siblingas, true); 
     } else { 
      var siblingas = $(this).parent().siblings('ul'); 
      check_checker(siblingas, false); 
     } 
    }); 
}); 

チェックをクリックすると、ULは、それがすべてcheckbox'esをチェックULた場合。マビーcheck_checkerは決して終了しないか?皆さんはどう思いますか?

+1

jQueryセレクタは常にtrueになるオブジェクトを返すので、if($(兄弟).children( 'ul')){'は常に 'true'になります。 'if($(兄弟)).children( 'ul')。length){'代わりに –

+0

@RoryMcCrossan IT WORKED !!答えに書く:) – Sidas

答えて

1

はいこれは決して終わりません。 $(siblings).children('ul')は真実であるObjectを返しますので、常に真です。代わりにlengthプロパティを使用することをお勧めします。

関連する問題