2013-12-17 40 views
0

我试图创建一个包含jQuery代码的自定义标记。 例如像<i2:myTag id="myId">自定义标记,变成类似:从Grails自定义标记调用jQuery

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

那不是因为工作,我现在用的是资源的开发插件加载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? 
} 

任何想法表示赞赏。

感谢

回答

1

实际上,它就会简单得多,只是使用$(文件)。就绪(); feature of jQuery

因此,对于你的例子只是使它呈现:

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

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

+0

感谢Joshua,问题是jQuery库没有被加载到头......将它移动到那里你的解决方案工作正常。 – IsidroGH