2014-02-19 54 views
1

我有一個XML字符串類似如下發現,如果XML字符串節點包含子元素或不jQuery的

<parent> 
    <id>parent1</id> 
    <child> 
     <id>parent1child1</id> 
    </child> 
</parent> 
<parent> 
    <id>parent2</id> 
    <child/> 
</parent> 

我如何使用jQuery,也多了一個檢查,如果孩子節點有多個節點在它問題是,當我試圖讓ID

$(this).find("id").text() 

然後我得到雙方父母和孩子的id的值我如何得到本節點

+0

什麼瀏覽器,你需要支持? – vittore

+0

你可以試試'.closest',但是如果你發佈一些你的代碼,它可能會有所幫助。 – Popo

+0

所有的桌面瀏覽器 –

回答

0

我相信你可以通過下面的選項實現這一點:fiddle

// gets id for each parent node 
$(xml).find('parent > id').each(
function() { 
    alert($(this).text()); 
}); 

// gets id for each child node 
$(xml).find('parent > child > id').each(
function() { 
    alert($(this).text()); 
}); 

// gets count of ids of children in each parent node 
$(xml).find('parent').each(
function() { 
    alert($(this).find('child > id').length);  
}); 

UPDATE:

$(xml).children('parent').each(
    function() { 
     //parent id 
     alert($(this).children(':first').text()); 
     $(this).find('child').each(function() { 
      //each child element for each parent 
      $(this).children(':not(child)').each(function() { 
       alert($(this).text()); 
     }); 
    }); 
}); 

see new fiddle here

+0

循環通過父節點如果我有很多節點,如id,名稱等..我想要什麼在find.each的單個循環中查找值.. –

+0

@ user2042524我更新瞭解決方案 – Popo

0

您更好地使用XPath提供在的ID ,但它可以和我們一樣會使用jQuery做

var xml="<root><parent>\ 
    <id>parent1</id>\ 
    <child>\ 
     <id>parent1child1</id>\ 
    </child>\ 
</parent>\ 
<parent>\ 
    <id>parent2</id>\ 
    <child/>\ 
</parent></root>" 
, xmlDoc = $.parseXML(xml) 
, $xml = $(xmlDoc) 
, allWithChildrenId = $xml.find('parent:has(child:has(id))').each(
    function(i,e) { console.log (i,e) }) 
, allWithChildrenAny = $xml.find('parent:has(child:has(*))').each(
    function(i,e) { console.log (i,e) }) 
相關問題