2013-04-12 13 views
0

我期待在g:link gsp标记的id字段中传递一个javascript变量,但不知道如何去做。如果我以这种错误的方式告诉我。传递JavaScript变量gsp g:链接标记

以下是我有:

  • 其中的每一行都有我想在G通ID的表:该表行的onClick设置一个JavaScript变量与价值链接
  • 的javascript行ID的


    <r:script disposition="head"> 
     var data = -1; 
     $(document).ready(function() { 
     $('#${tableId} tr').click(function (event) { 
      data = $(this).attr('id'); 
     }); 
     }); 
    </r:script> 

  • 的话,我想通过JavaScript的data变量AG:链接

    <li><g:link controller="filterIntraday" action="show" id="??????">View</g:link></li> 

我不能得到这个工作。如何在gsp标签中设置javascript变量。或者,在g:link标记中传递客户端变量的另一种方式是什么?

谢谢。

回答

3

如何事件函数内改变“href”属性:

function (event) { 
    data = $(this).attr('id'); 
    $("link-selector").attr("href", "${createLink(controller: 'filterIntraday', action: 'show')}/" + data); 
} 
+0

感谢谢尔盖。这是一个很好的建议,它解决了能够在gsp生成的链接的末尾添加javascript变量的问题。然而,它打破了我组织代码的方式。我有一个模板中的链接。有了这个方法,我需要更新JavaScript点击中的所有链接。我只想更新一个JavaScript变量并将该变量放在模板中。我希望这不是一个解释太混乱。谢谢。 –

3

不能设置id在GSP标签,因为标签已经被处理。你可以做的是改变生成的html的href。为此,您需要为<a>元素分配一个ID。

<li><g:link controller="filterIntraday" action="show" elementId="linkToFilter">View</g:link></li> 

这将创建类似:

<li>a<a href='yourapp/filterIntraday/show' id="linkToFilter" /></li> 

然后,在JavaScript可以改变的href:

data = $(this).attr('id'); 
$link = $('#linkToFilter'); 
$link.attr('href', $link.attr('href')+'/'+data); 
+0

感谢您的解释和细节。基本上和谢尔盖的评论一样,但更详细。 –