2011-11-28 16 views
0

我想在我的XSLT中添加我的jQuery代碼,這不是問題,問題是....我需要在我的jQuery代碼中提供動態ID。在jQuery中提供動態ID在XSLT中

我使用XSLT的變量來提供它,但不知道究竟應該是什麼樣的正確方法?? !!

這裏是我的示例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() { 

需提供本人在那裏我已經寫@Name(一個XSLT變量)一個動態的ID。

請建議!!

回答

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> 

還有一點:剛剛換後的每個排序元素必須COMME。

要使用XSLT生成id,您需要使用generate-id()函數。我沒有任何參數,它返回上下文節點的唯一ID。在我們的例子中,如果用generate-id()替換上面代碼中select屬性中的@Name

如果您在XSLT的另一個地方使用它,如果您處於相同的上下文中,或者如果您將正確的上下文節點作爲參數generate-id(myNode),它將生成相同的ID。您可以用任何返回節點集的XPath函數替換myNode

+0

嗨,謝謝,它工作正常...我可以提供ny隨機數字到它?我還希望在此