我正在尝试创建一个包含jQuery代码的自定义标记。
例如,<i2:myTag id="myId">
之类的自定义标记会变成类似:
<a href="#" id="myId">Click</a>
<script>
$("#myId").click(function(){...})
</script>
这是行不通的,因为当我使用resourses插件加载jQuery库时,在处理脚本代码时,jQuery尚未加载。
我想我可以使用document.ready或window.load来强制在适当的时刻执行以前的脚本代码,但有没有更优雅的方法来实现呢?
例如,一个足以满足我需求的解决方案是从我的自定义标记中调用资源插件。但我不知道如何将带有javascript代码的字符串作为gsp <r:script>
标记的正文封锁传递:
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?
}
任何想法都表示赞赏。
由于
答案 0 :(得分:1)
实际上,使用$(document).ready()会更简单; feature of jQuery
因此,对于您的示例,只需将其渲染:
$(document).ready(function() { $("#myId").click(function(){...}); });
这似乎是最简单的解决方案,因此也是最优雅的。为什么过度设计一些只会增加复杂性的东西呢?很抱歉,如果我错过了使用它的问题,但我确实认为这是最简单的解决方案。