2011-10-22 3 views
1

DIV 요소에 동적으로 UL 요소를 추가하고 있습니다. 나는 DIV 내부에 얼마나 많은 UL 요소를 셀 수 있도록하고 싶습니다 모든 ULS에 동적으로 제거되면 나는 그들이에 포함 된 DIV를 삭제할 수 있도록. Div가있는 Javascript에 몇 개의 UL 요소가 있는지 계산하십시오.

<div id="000"> 

<ul id="000-1"> 
<li>Stuff</li> 
<li>Stuff</li> 
</ul> 

<ul id="000-2"> 
<li>Stuff</li> 
<li>Stuff</li> 
</ul> 

</div> 

는 간단한 자바 스크립트 솔루션이 있습니까 그게 내가 이런 걸 할 수 있도록 UL의 양을 계산 ..?

if(ulcount == 0){ 

var remove = document.getElementById("000"); 
remove.innerHTML = ''; 
results.parentNode.removeChild("000"); 

} 

감사합니다.

답변

4

을 Cheeso의 답변 @ 것은 좋은 순수 JS 솔루션입니다. 하지만 jQuery를 사용하는 경우 프로세스를 더 간단하게 만들 수 있습니다.

jQuery('div#000').children('ul').length; 

위의 코드는 아이의 수 div#000ul 요소를 반환합니다.

function countUls() {jQuery('div#000').children('ul').length;} 

바인드 그 이벤트에이 될 수 있도록 : 동적 요소를 추가 할 때

는 변경이 발생할 때마다 함수를 만들고 번호를 업데이트하기 위해 호출해야합니다, 카운트를 업데이트하려면 번호를 업데이트하려고 할 때 호출됩니다.

+0

이 jQuery 솔루션을 기존의 javascript 함수와 함께 사용할 수 있습니까? – Wez

+0

@Wezly Certaily! jQuery는 JavaScript 라이브러리이므로 표준 JavaScript와 함께 사용할 수 있습니다. – Nathan

+0

jQuery 왜건에 뛰어들 필요가 있습니다. majorly thanks thanks. – Wez

2

코드 :

function getDirectChildrenByTagName(elt,tagname) { 
     var allChildren = elt.children, wantedChildren=[], i, L; 
     tagname = tagname.toUpperCase(); 
     for(i=0, L=allChildren.length; i<L; i++) { 
      if (allChildren[i].tagName.toUpperCase() == tagname) { 
       wantedChildren.push(allChildren[i]); 
      } 
     } 
     return wantedChildren; 
    } 

이처럼 사용

var zero = document.getElementById("000"); 
var uls = getDirectChildrenByTagName(zero, 'UL'); 
var ulCount = uls.length; 
    ....