我想在我的XSLT中添加我的jQuery代码,这不是问题,问题是....我需要在我的jQuery代码中提供动态ID。
我正在使用XSLT的变量提供它,但不知道究竟应该是什么样的正确方法?? !!
这是我的Sample XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<xsl:output method="html" indent="yes" />
<xsl:param name="groups" select="//rs:data//z:row[not(@GroupName=preceding-sibling::z:row/@GroupName)]" />
<xsl:key name="k1" match="Users/User" use="@Name"/>
<xsl:template match="/">
<xsl:for-each select="$groups">
<script type="text/javascript">
function togglesetup_0() {
jQuery('#@Name .contacts_basic').click(function () {
jQuery(this).parent().children('div.contacts_basic2 > div.contacts_basic1').slideToggle();
jQuery(this).toggleClass('contacts_basic_selected');
});
}
_spBodyOnLoadFunctionNames.push("gmis_contacswp_togglesetup_0");
</script>
<xsl:sort select="@GroupName" order="descending" />
<xsl:sort select="@User" order="ascending" />
<xsl:variable name="group" select="@GroupName" />
.....
......
阅读此行......
jQuery('#@Name .contacts_basic').click(function () {
我需要提供一个动态ID,我写了@Name(一个XSLT变量)。
请建议!!
答案 0 :(得分:1)
试试这个:
<script type="text/javascript">
function togglesetup_0() {
jQuery('#<xsl:value-of select="@Name"/>.contacts_basic').click(function () {
jQuery(this).parent().children('div.contacts_basic2 > div.contacts_basic1').slideToggle();
jQuery(this).toggleClass('contacts_basic_selected');
});
}
_spBodyOnLoadFunctionNames.push("gmis_contacswp_togglesetup_0");
</script>
关于你的代码的另一点:sort元素必须在for-each之后。
要使用XSLT生成id,您需要generate-id()
函数。我没有任何参数,它返回上下文节点的唯一ID。在我们的示例中,如果您使用generate-id()替换上面代码中的select属性中的@Name
。
如果您在XSLT中的其他位置使用它,如果您位于相同的上下文中,或者您将正确的上下文节点作为参数generate-id(myNode)
,则它将生成相同的ID。您可以通过任何返回节点集的XPath函数替换myNode
。