【发布时间】:2014-06-10 13:02:46
【问题描述】:
类似于this thread,我正在尝试为文档的不同部分添加和删除选择框。但是,当我调用 remove 函数时,它会删除我克隆对象的第一个实例,而不是最后一个。我尝试过使用 :last 和 :last-child,但它们似乎不起作用(可能只是语法错误,因为我是 Javascript/Jquery 新手)
另外,我应该为每个克隆对象分配不同的 ID 吗?我的目标是让每个 g:select 选择一个数据库对象,并将所有不同的对象文本编译成 1 个大字符串(每个对象都有一个我要编译的“documentBody”字段)。由于我基本上对每个对象做同样的事情,我是否有必要为每个选择分配特定的 id,还是只克隆它们就足够了?
这是我目前已经实现的
<div id="selects">
<g:select name="intro"
id= "intro" from="${package.name.Subtag.findAllWhere(tag: package.name.Tag.get(2))}" noSelection="['': 'Please choose Subtag']"/>
</div>
<button onclick="addSelect()">Add</button>
<button onclick="removeSelect(intro)">Remove</button>
和
<g:javascript library="jquery"/>
<g:javascript>
function addSelect(){
var cloner = $("#intro").clone();
$("#selects").append(cloner);
}
function removeSelect(id){
$("#intro:last-child").remove();
}
</g:javascript>
【问题讨论】:
-
那是无效的,id 重复存在。单个页面中每个元素的 ID 应该是唯一的。
-
您可以更改每个新克隆的 ID,但改用类选择器会更加简洁和轻松。
-
可以使用jQuery提供的last()方法。
-
感谢您的帮助。切换到类选择器后,.last() 方法运行成功。
标签: javascript jquery grails