【问题标题】:Calling jQuery from a Grails custom tag从 Grails 自定义标签调用 jQuery
【发布时间】:2013-12-17 17:22:15
【问题描述】:

我正在尝试创建一个包含 jQuery 代码的自定义标签。 例如,像<i2:myTag id="myId"> 这样的自定义标签会变成这样的:

<a href="#" id="myId">Click</a>
<script>
    $("#myId").click(function(){...})
</script>

这不起作用,因为我使用资源插件加载 jQuery 库,在处理脚本代码时,尚未加载 jQuery。

我想我可以使用 document.ready 或 window.load 来强制之前的脚本代码在正确的时刻执行,但是,有没有更优雅的方法来实现它?

例如,一种足以满足我需求的解决方案是从我的自定义标签中调用资源插件。但我不知道如何将带有 javascript 代码的字符串作为主体闭包传递给 gsp &lt;r:script&gt; 标签:

myTag={attrs,body->
  out<<"""<a href="#" id="myId">Click</a>"""

  def javascriptCode = """$("#myId").click(function(){...})"""

  r.script( ??? ) <--- how to set the javascriptCode as the body closure of the <r:script> tag?
}

任何想法都值得赞赏。

谢谢

【问题讨论】:

    标签: jquery grails grails-2.0


    【解决方案1】:

    实际上只使用 $(document).ready(); 会简单得多。 feature of jQuery.

    因此,对于您的示例,只需将其渲染:

    $(document).ready(function() { $("#myId").click(function(){...}); });
    

    这似乎是最简单的解决方案,因此也是最优雅的。为什么过度设计一些只会增加复杂性的东西,而这工作得很好?抱歉,如果我错过了使用它的问题,但我确实认为这是最简单的解决方案。

    【讨论】:

    • 感谢 Joshua,问题是 jQuery 库没有被加载到头部...将它移到那里你的解决方案工作正常。
    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 2023-03-09
    • 2014-12-24
    相关资源
    最近更新 更多