2011-10-22 47 views
1

我将UL元素动态添加到DIV元素。我想能算多少UL元素有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> 

有一个简单的JavaScript解决方案这是指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旅行车..主要感谢家伙。 – 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; 
    ....