【发布时间】:2015-02-05 11:07:51
【问题描述】:
我有一个可以在同一个视图中多次呈现的模板。
模板包含一个表单,我有一些使用 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>
【问题讨论】:
-
除了我的回答之外,还要检查您的 javascript 绑定,您正在绑定的
"click"事件缺少右双引号。 -
抱歉..我目前无权访问我的项目。那里的语法很好,所以它只是我的问题中的一个错误。我的方法很有效,我只是觉得应该有更好的方法来生成 id。也许没有?
-
误读了这个问题,我的错。这种方法有哪些顾虑?对我来说它看起来不错。
-
使用时间作为 id 生成器对我来说感觉很奇怪。我想模板在同一时间被渲染的可能性很小。
-
Travis,如果您真的对此感到担心,请在模板顶部生成的 ID 或 GUID 或 UUID 中添加一个随机数。
标签: javascript jquery html grails gsp