使用grails生成html id的最佳实践

Best practice for generating html ids with grails

本文关键字:最佳 id grails 生成 html 使用      更新时间:2023-09-26

我有一个可以在同一视图中多次渲染的模板。

该模板包含一个表单,我使用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>

虽然这样做可能会让人觉得有点"奇怪"或"奇怪",但你的方法会实现你想要的。添加您在GSP级别生成的随机数或UUID也将有助于避免冲突(尽管这可能有些过头了)。

Grails并没有以这种方式提供任何帮助。由于这是浏览器中如何处理元素的问题,DOM和Grails通常会处理服务器端的问题。

另一种选择是重构代码,使其不依赖于元素id,而是更通用的、基于分类的代码。使用类名是一个不错的方法。根据您的要求,这可能工作得很好,也可能不工作。