我有以下XML:
<building>
<id>1</id>
<name>Annex</name>
<rooms>
<room>
<number>100</number>
<type>conference room</type>
<capacity>4</capacity>
</room>
<room>
<number>203</number>
<type>computer lab</type>
<capacity>30</capacity>
</room>
</rooms>
</building>
我在jQuery函数中有一些块,它们解析XML文件的特定父节点,例如<number>
。我还有一些其他.on(click)
函数将<number>
的{{1}}作为.text()
参数传递,usd显示每次点击所需的getNum()
。无论如何,这是成功的,但是现在我正在尝试显示的不仅仅是<number>
节点,如您所见。我还尝试显示<number>
节点的兄弟文本<number>
和<type>
。我尝试过使用<capacity>
函数,但它似乎跳过了一个节点。到目前为止,我唯一能完成中途工作的是使用.next()
函数;我说中途因为,根据参数,我可以只获取.nextAll(arg)
节点或<type>
节点进行打印,而不是两者。更奇怪的是,使用<capacity>
似乎有效的唯一参数没有逻辑意义(参见下面的代码注释);我发现.nextAll()
和1
只显示相应的节点,而不是2
和-1
。这些价值观对我来说没有意义,有人能理解为什么吗?
0
尽管如此,我的主要关注点和总体问题是如何声明多个陈述;因为我只能出现一个或另一个,为什么我不能同时声明这个:$room.find('rooms room number').each(function () {
if (getNum() == $(this).text()) {
var $numDiv = $('<div>', {
text: '- Room ' + $(this).text(),
id: $(this).text()
}).appendTo($div);
///////////////////////////////////////////
// This SKIPS <type> node and displays <capacity> node
// $(this).next().appendTo($div);
///////////////////////////////////////////
// This displays <type> node
// $(this).nextAll().eq(-1).appendTo($div);
///////////////////////////////////////////
// This displays <capacity> node
// $(this).nextAll().eq(0).appendTo($div);
///////////////////////////////////////////
// This displays neither node. Why?
// $(this).nextAll().eq(-1).appendTo($div);
// $(this).nextAll().eq(0).appendTo($div);
}
});
return $div;
和这个:$(this).nextAll().eq(-1).appendTo($div);
背靠背?
答案 0 :(得分:0)
我找到了解决方案,但是我仍然不完全理解为什么先前的陈述不起作用。无论如何,这就是我必须做的事情:
// Declare each node in its on HTML tag.
$('<h4>', { text: $(this).nextAll().eq(0).text(), class: 'roomText' }).appendTo($div);
$('<h4>', { text: $(this).nextAll().eq(1).text(), class: 'roomText' }).appendTo($div);
如果有人能够解释那些很棒的逻辑。