++++++++++更新++++++++++++++++
さらにテストしたところ、 attr メソッドが属性を設定できないことが数回ありました。簡単にするために、次のコード行を変更します。
$(this).attr('name', 'yahoo');
afterRemoveCurrent
イベントがトリガーされた後、上記のコード行が実行されるはずでしたが、驚いたことにconsole.log
、$(this)
属性はに変更されませんでしたyahoo
。これを数回繰り返したところ、属性が変更された回数と変更されていない回数があることがわかりました。setTimeout
内部の関数全体の実行をafterRemoveCurrent
500ミリ秒遅らせていましたが、結果は同じでした。これは役に立ちますか?
++++++++++更新内容は以上で終了++++++++++++++++++++++++
期待どおりに動作しないこの小さなコードがあります。sheetit http://www.mdelrosso.com/sheepit/index.php?lng=en_GBというプラグインを使用しています(複数のフォーム フィールドを追加できます):
ページのライブ バージョンは次の場所で見ることができます。
このi
ステートメントの$(this).attr('name', 'rooms[' + i + ']' + '.' + arr[1] + '.' + arr[2]);
は、正しく評価されないことがあります。もう少し詳しく言うと:
変数i
は、次の 2 つのステートメント (各ループ) で同じである必要があります。
$(this).attr('data-index', i);
と
$(this).attr('name', 'rooms[' + i + ']' + '.' + arr[1] + '.' + arr[2]);
しかし、どういうわけか、値がi
最初0
のステートメントにある場合、それは1
または2番目のステートメントにある他の数値です。
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++;
});
}
});