为什么变量的值在jQuery $ .each方法中会发生变化?

时间:2013-04-29 01:52:42

标签: javascript jquery html

我正在尝试重命名嵌套在名为property-container的div中的输入字段。用户可以创建多个property-container。每次用户创建此div时,我都希望相应地重命名输入字段。这是我动态生成的表单

<div class="property-container">
 <input type="hidden" name="proposal[process][systems][1][id]">
 <input type="hidden" name="proposal[process][systems][1][name]">
 <input type="hidden" name="proposal[process][systems][1][stations][1][id]">
 <input type="hidden" name="proposal[process][systems][1][stations][1][name]">
 <input type="hidden" name="proposal[process][systems][1][stations][1][price]">
</div>

这是我重命名的方式

stationFieldsNames:function(station_container, systemNumber){
        station_container.find('.property-container').each(function(i, s){
            var hidden = $('.property-container input[type=hidden]:first');
            var system_id = station_container.index('div');
            $(this).append('SCI inside '+system_id);
            hidden.attr('name','proposal[process][systems]['+ system_id +'][id]');
            hidden.next().attr('name','proposal[process][systems]['+ system_id +'][name]');
            hidden.next().next().attr('name','proposal[process][systems]['+ system_id +'][stations]['+i+'][id]');
            hidden.next().next().next().attr('name','proposal[process][systems]['+ system_id +'][stations]['+i+'][name]');
            hidden.next().next().next().next().attr('name','proposal[process][systems]['+ system_id +'][stations]['+i+'][price]');
        });

如您所见,我打印出system_id方法中的$.each(),我看到每次都是正确的,但字段名称中的值不一样。如果system_id让我们说44字段名称为1.我不明白为什么会这样做。

1 个答案:

答案 0 :(得分:0)

尝试

station_container.find('.property-container').each(function(i, s){
    var hidden = $('input[type=hidden]:first', this);
    var system_id = $(this).index();
    $(this).append('SCI inside '+system_id);
    hidden.attr('name','proposal[process][systems]['+ system_id +'][id]');
    hidden.next().attr('name','proposal[process][systems]['+ system_id +'][name]');
    hidden.next().next().attr('name','proposal[process][systems]['+ system_id +'][stations]['+i+'][id]');
    hidden.next().next().next().attr('name','proposal[process][systems]['+ system_id +'][stations]['+i+'][name]');
    hidden.next().next().next().next().attr('name','proposal[process][systems]['+ system_id +'][stations]['+i+'][price]');
});