通过逻辑的结合以及对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/

10-11 12:39