【问题标题】:Passing javascript variable to gsp g:link tag将 javascript 变量传递给 gsp g:link 标记
【发布时间】:2013-04-12 23:38:19
【问题描述】:

我希望在 g:link gsp 标记的 id 字段中传递一个 javascript 变量,但不知道该怎么做。如果我以错误的方式处理此问题,请告诉我。

这是我所拥有的:

  • 每行都有我要在 g:link 中传递的 id 的表
  • 表格行的onClick设置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 变量传递给 g:link

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

我无法让它工作。如何在 gsp 标签中设置 javascript 变量。或者在 g:link 标签中传递客户端变量的另一种方法是什么?

谢谢。

【问题讨论】:

    标签: javascript grails gsp


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢谢尔盖。这是一个很好的建议,它解决了能够将 javascript 变量添加到 gsp 生成的链接末尾的问题。然而,它打破了我组织代码的方式。我将所有链接都放在模板中。使用这种方法,我需要更新 javascript 点击中的所有链接。我只想更新一个 javascript 变量并将该变量放在模板中。我希望这不会使解释过于混乱。谢谢。
    【解决方案2】:

    您无法在 gsp 标签中设置 id,因为该标签已被处理。您可以做的是更改生成的html的href。为此,您需要为 &lt;a&gt; 元素分配一个 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);
    

    【讨论】:

    • 感谢您的解释和详细信息。与谢尔盖的评论基本相同,但更详细。
    猜你喜欢
    • 2019-03-24
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多