我有一个xml字符串,如下所示
<parent>
<id>parent1</id>
<child>
<id>parent1child1</id>
</child>
</parent>
<parent>
<id>parent2</id>
<child/>
</parent>
如何使用jquery检查子节点中是否有更多节点,还有一个问题是当我尝试获取id的值时
$(this).find("id").text()
然后我得到父母和孩子的id如何得到当前节点的id
答案 0 :(得分:0)
你最好使用xpath,但也可以使用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) })
答案 1 :(得分: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);
});
更新:
$(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());
});
});
});