Предоставить динамический идентификатор в jQuery внутри XSLT - PullRequest
0 голосов
/ 28 ноября 2011

Я хочу добавить свой код jQuery в мой XSLT, это не проблема, проблема в том, что .... Мне нужно предоставить Dynamic ID в моем коде jQuery.

Я использую переменную 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).

Пожалуйста, предложите !!

1 Ответ

1 голос
/ 28 ноября 2011

Попробуйте это:

<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>

Еще один момент, касающийся вашего кода: элемент сортировки должен начинаться сразу после for-each.

Для создания идентификатора с помощью XSLT у вас есть функция generate-id().Если у вас нет аргументов, он возвращает уникальный идентификатор для узла контекста.В нашем случае, если вы замените @Name в атрибуте select в приведенном выше коде на generate-id ().

Если вы используете его в другом месте в XSLT, он выдаст тот же идентификатор, если выв том же контексте или если вы указали правильный контекстный узел в качестве аргумента generate-id(myNode).Вы можете заменить myNode на любую функцию XPath, которая возвращает набор узлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...