通过逻辑的结合以及对JQuery / Javascript的缺乏经验,我发现自己遇到了这个问题。
背景 -
我使用的是Complex-Form-Examples的Jquery-deep branch,它启用了一个可以一次创建/编辑多个嵌套表的记录的表单。部分原因在于用户可以动态添加/删除新记录。示例:用户可以创建一个项目(A级),其中包含许多任务(B级),每个任务具有许多任务(C级)。
JavaScript新增功能-
我建立了一个JavaScript函数,该函数独立地应用于每个任务。当用户从选择框中进行选择时,“ true”的ID为"multiple_choice_" + f.object_id.to_s
,该函数会找到它并突出显示一个名为"true_" + f.object_id.to_s
的div。
新元素没有新的object_id-
每次用户添加新记录时,他们都具有相同的object_id,这使我的上述计划毫无用处。我尝试将此object_id添加到rand(1000000000)
,但是即使每次添加新Task时,它也相同。
如何(1)每次添加任务时生成新的object_id /随机数,或(2)为每个任务使用不同的唯一标识符,而每次添加都会有所不同?
application.js中的Add_child代码:
$(function() {
$('form a.add_child').live('click', function() {
var assoc = $(this).attr('data-association');
var content = $('#' + assoc + '_fields_template').html();
var regexp = new RegExp('new_' + assoc, 'g');
var new_id = new Date().getTime();
$(this).parent().before(content.replace(regexp, new_id));
return false;
});
});
澄清度
问题不在于如何在上面的.js代码中生成随机数。问题是如何从新生成的代码中访问该新随机数,以形成html元素的ID。
最佳答案
只需使用全局计数器:
var _taskCount = 0;
$(function() {
$('form a.add_child').live('click', function() {
...
var new_id = "Task_" + _taskCount;
_taskCount++;
...
});
});
关于javascript - 复杂表格-如何为每个新元素生成新的object_id?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4614469/