单击链接时触发函数调用,返回单击的链接值

时间:2010-09-01 18:20:09

标签: xslt jquery

基本上,如果点击特定<a>并将其传递给另一个方法,我希望获得'URLValue'。还有其他几个<a>元素,其中class =“LinkClass”,我编写了一个JQuery来获取被点击的元素值。 下面是一个正常工作的JQuery,它引用了XSL。

 $("a.LinkClass").live("click", function() {
        var URL = $(this).attr("href");  
        //Now call another method passing this value
    });

但是,我可以直接通过XSL使用该值,在链接的事件点击时触发函数调用吗?

以下XSL:

 <a class="LinkClass">
      <xsl:attribute name="href">
        <xsl:value-of select="URLValue"/>
      </xsl:attribute>
  </a>

1 个答案:

答案 0 :(得分:1)

在浏览器上打开此XML文档时:

<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test XSLT javascript injektion</title>
    </head>
    <body>
        <h2>Test XSLT javascript injektion</h2>
        <ul>
            <li><a href="http://www.google.com">Google</a></li>
            <li><a href="http://www.stackoverflow.com">Stack Overflow</a></li>
        </ul>
    </body>
</html>

此样式表为“test.xsl”:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
    <xsl:output method="xml" omit-xml-declaration="yes"
     doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
     doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
    <xsl:template match="processing-instruction()" priority="1"/>
    <xsl:template match="node()|@*" name="identity">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="xhtml:a/node()[1]">
        <xsl:attribute name="onclick">
            <xsl:value-of select='concat("alert(&apos;",..,"&apos;)")'/>
        </xsl:attribute>
        <xsl:call-template name="identity"/>
    </xsl:template>
</xsl:stylesheet>

输出:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test XSLT javascript injektion</title>
    </head>
    <body>
        <h2>Test XSLT javascript injektion</h2>
        <ul>
            <li>
                <a href="http://www.google.com" onclick="alert('Google')">Google</a>
            </li>
            <li>
                <a href="http://www.stackoverflow.com" onclick="alert('Stack Overflow')">Stack Overflow</a>
            </li>
        </ul>
    </body>
</html>

警报适用于点击。