++++++++++更新++++++++++++++++
在进一步的测试中,我发现有几次 attr 方法无法设置属性。我更改了以下代码行以使事情变得简单:
$(this).attr('name', 'yahoo');
afterRemoveCurrent
触发事件后,我应该console.log
在$(this)
上面的代码行上执行,令我惊讶的是,该属性没有更改为yahoo
. 我重复了几次,观察到属性有几次改变了,其他时候没有。我曾经setTimeout
将整个函数的执行延迟afterRemoveCurrent
500 毫秒,但结果仍然相同。这有帮助吗?
++++++++++更新内容结束+++++++++++++++++++++++++
我有一小段代码没有按预期工作。我正在使用一个名为sheepit http://www.mdelrosso.com/sheepit/index.php?lng=en_GB的插件(允许您添加多个表单字段):
该页面的实时版本可以在这里看到:
i
此语句中的 the$(this).attr('name', 'rooms[' + i + ']' + '.' + arr[1] + '.' + arr[2]);
有时会被错误地评估。更加具体:
以下 2 个语句(每个循环)中的变量i
应该相同:
$(this).attr('data-index', i);
和
$(this).attr('name', 'rooms[' + i + ']' + '.' + arr[1] + '.' + arr[2]);
但不知何故,当值i
在0
第一个语句中时,它是1
或第二个语句中的某个其他数字。
var sheepItForm = $('#sheepItForm').sheepIt({
separator: '',
allowRemoveLast: false,
allowRemoveCurrent: true,
allowAdd: true,
maxFormsCount: 8,
minFormsCount: 1,
iniFormsCount: 0,
pregeneratedForms: ['pregenerated_form_1'],
afterRemoveCurrent: function(source) {
var i = 0;
$('select.children').each(function() {
$(this).attr('data-index', i);
$(this).parent().find('select.child-age-option').each(function() {
var arr = $(this).attr('name').split('.');
$(this).attr('name', 'rooms[' + i + ']' + '.' + arr[1] + '.' + arr[2]);
});
i++;
});
}
});