2016-04-07 18 views
1

Merhaba yığın akışı topluluğu. "Çok fazla özyineleme" hatasıyla ilgili yardıma ihtiyacım var. Ben bu işlevler, garip yapınca gelir, ama her şey iyi sadece hata .:Ağaçta çok fazla özyineleme hatası var

onay tıklandığında
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 varsa hepsi checkbox'es denetler UL çalışır. Maby check_checker hiç bitmez mi? Siz ne düşünüyorsunuz?

+1

'halinde ($ (kardeşler) .Children ('ul')) { 'daima TRUE' olacaktır. 'If ​​($ (kardeşler) .children ('ul'). Length) {' yerine –

+0

@RoryMcCrossan IT WORKED kullanın! Cevap yazınız :) – Sidas

cevap

1

Evet, bu asla bitmez. $(siblings).children('ul'), doğru olan bir Nesneyi döndürecektir, bu nedenle her zaman doğru olacaktır. Bunun yerine length özelliğini kullanmanızı tavsiye ederim. JQuery seçiciler her zaman doğru için zorlar bir nesneyi döndürmek olarak

function check_checker (siblings, status) { 
    if (siblings) { 
     if (status == true) { 
      $(siblings).children('li.imCheckbox').children('input').prop("checked", true); 
      if ($(siblings).children('ul').length > 0) { 
       check_checker($(siblings).children('ul'), true); 
      }           
     } else { 
      $(siblings).children('li.imCheckbox').children('input').prop("checked", false); 
      if ($(siblings).children('ul').length > 0) { 
       check_checker($(siblings).children('ul'), false); 
      }           
     } 
    } 
} 
İlgili konular