我的任务是找到一个客户端解决方案来动态显示XML数据(所以请不要使用PHP或ASP)。我完全愿意接受有关如何执行此操作的任何建议,但我目前正在尝试使用JQuery和DIV(可能不是最优雅的)解决方案。
这是我到目前为止所拥有的:
XML
<ForAdoption>
<Pet>
<ID_Key>123abc</ID_Key>
<Name>Spot</Name>
<Species>dog</Species>
<Info>Stuff about Spot.</Info>
</Pet>
<Pet>
<ID_Key>789ghi</ID_Key>
<Name>Doggy</Name>
<Species>dog</Species>
<Info>Stuff about Doggy.</Info>
</Pet>
<Pet>
<ID_Key>987zyx</ID_Key>
<Name>Mittens</Name>
<Species>cat</Species>
<Info>Stuff about Mittens.</Info>
</Pet>
*我无法知道将会有多少宠物或唯一的ID_Key。
我想要发生的是XSL中返回的值包含一个“链接”,以显示基于特定动物的更多信息(我使用JQuery来执行此操作)。基本上,Info结果将包含在使用display:none设置样式的DIV中。我希望每个宠物的“链接”能够引用该宠物的ID_Key(它始终是唯一的)。我当时希望能够根据它的ID_Key显示有关该宠物的其他信息。这有意义吗?
到目前为止,这是我的XSL:
<xsl:for-each select="ForAdoption/Pet">
<p>
ID_Key: <span style="cursor:pointer;text-decoration:underline;" id="{ID_Key}"><xsl:value-of select="ID_Key" /></span><br />
Name: <xsl:value-of select="Name"/><br />
Species: <xsl:value-of select="Species"/>
</p>
<script>
$(document).ready(function () {
$("#<xsl:value-of select="ID_Key" />").toggle(function() {
$("#more_info").show();
$("#").hide();
}, function() {
$("#more_info").hide();
});
});
</script>
<div style="display:none;" id="more_info">
More info: <xsl:value-of select="Info" />
<!-- Need to figure out how to add some intelligence to connect this result to the selected ID_Key -->
</div>
</xsl:for-each>
因此,点击ID_Key会显示更多信息,但它只显示我的XML中第一只宠物的Info值。当然,我想要的是一些智能说:如果ID_Key(从我的跨度“链接”的id中返回)= n然后显示ID为ID_Key = n的宠物的信息!我看到并理解为什么会这样,但我只是不知道如何获得我想要的结果。
这可能吗?有更好的JavaScript / JQuery解决方案吗?这种事情甚至可能做客户端吗?任何建议都表示赞赏。