我有一个可以在同一个视图中多次渲染的模板。
模板包含一个表单,我使用html id将一些jquery事件监听器附加到表单元素。
现在我正在使用' g:set'使用当前时间(以毫秒为单位)在模板顶部创建elementId变量,并将其附加到表单上的每个元素。这样,无论呈现相同模板多少次,每个表单元素都将在页面中具有唯一ID。
我的方法有效,但在我看来,必须有更好的方法来实现我想做的事情?
以下是我的方法的一个例子:
<g:set var="elementId" value="${'elementId-' + new Date().getTime()}" />
<form>
<g:textField id="${elementId}name" name="name"/>
<g:textField id="${elementId}address" name="address"/>
</form>
<script>
$("#${elementId}name").on("click", myFunction())
$("#${elementId}address").on("click", myFunction())
</script>
答案 0 :(得分:0)
虽然它可能感觉有点奇怪&#39;或者&#39;奇怪&#39;要做到这一点,你的方法将完成你所追求的目标。添加您在GSP级别生成的随机数或UUID也有助于避免冲突(尽管这可能是一种过度杀伤)。
Grails并没有以这种方式提供任何帮助。由于这是关于如何在浏览器中解决元素的问题,因此DOM和Grails通常会解决服务器方面的问题。
另一种方法是重构代码,使其不依赖于元素ID,而是更通用的代码,而不是依赖于分类。使用类名是一种很好的方法。根据您的要求,这可能会或可能不会很好。