Jquery 重置动态附加输入的数据Id
因此,红色方块显示了我试图实现的目标,我想在每个冠军之后重置数字,从[1]开始,但有人可能希望在第一个冠军后添加更多字段,这将增加旧数字Jquery 重置动态附加输入的数据Id,jquery,Jquery,因此,红色方块显示了我试图实现的目标,我想在每个冠军之后重置数字,从[1]开始,但有人可能希望在第一个冠军后添加更多字段,这将增加旧数字 $(document).ready(function(){ championNumber = 1; spellNumber=1; $('a#AddChampion').on('click',function(){ $('div#ChampionInput').append( '<div class
$(document).ready(function(){
championNumber = 1;
spellNumber=1;
$('a#AddChampion').on('click',function(){
$('div#ChampionInput').append(
'<div class="Champion" data-id="'+championNumber+'">\
<a href="#" class="Remove">Remove</a>\
<br>\
<input type="text" class="ChampionInput" list="champions" name="champion[]" placeholder="Champion '+championNumber+'">\
<datalist id="champions"></datalist>\
<a href="#" class="AddSpell">Add Spell</a>\
<br>\
<div>');
for(var key in champions){
if(champions.hasOwnProperty(key)){
$('#champions').append('<option value="' + key + '">');
}
}
championNumber++;
});
$('div#ChampionInput').on('click', 'a.Remove',function(){
$(this).parent('div.Champion').remove();
});
$('div#ChampionInput').on('click', 'a.AddSpell',function(){
$(
'<div class="Spell" data-id="'+spellNumber+'">\
<select name="change['+$(this).parent('div').data('id')+'][]">\
<option value="Passive">Passive</option>\
<option value="Q" selected>Q</option>\
<option value="W">W</option>\
<option value="E">E</option>\
<option value="R">R</option>\
</select>\
<input type="text" name="championSpell['+$(this).parent('div').data('id')+'][]">\
<br>\
<textarea type="text" size="20" name="SpellDescription['+$(this).parent('div').data('id')+'][]" placeholder="Enter Description" />\
<select name="SpellChange['+$(this).parent('.Champion').data('id')+']['+spellNumber+'][]">\
<option value="buff">Buff</option>\
<option value="nerf">Nerf</option>\
<option value="new">New</option>\
<option value="change">Change</option>\
<option value="bugfix">Bugfix</option>\
</select>\
<a href="#" class="AddChange">Add Change </a>\
<a href="#" class="RemoveSpell">Remove Spell</a>\
</div>\
').appendTo('.Champion[data-id='+$(this).parent('div').data('id')+']');
spellNumber++;
});
$('div#ChampionInput').on('click', 'a.AddChange',function(){
$(this).next('a.RemoveSpell').after(
'<div class="Change">\
<textarea type="text" size="20" name="SpellDescription['+$(this).parent('div').data('id')+'][]" placeholder="Enter Description" />\
<select name="SpellChange['+$(this).parent().parent('div').data('id')+']['+$(this).parent('.Spell').data('id')+'][]">\
<option value="buff">Buff</option>\
<option value="nerf">Nerf</option>\
<option value="new">New</option>\
<option value="change">Change</option>\
<option value="bugfix">Bugfix</option>\
</select>\
<a href="#" class="RemoveChange">Remove Change</a>\
</div>');
});
$('div#ChampionInput').on('click', 'a.RemoveSpell',function(){
$(this).closest('.Spell').remove();
});
$('div#ChampionInput').on('click', 'a.RemoveChange',function(){
$(this).closest('.Change').remove();
});
});
$(文档).ready(函数(){
championNumber=1;
拼写数=1;
$('a#AddChampion')。在('click',function()上{
$('div#championput')。追加(
'\
\
\
\
\
\
\
');
for(var密钥在冠军中){
if(champions.hasOwnProperty(键)){
$(“#冠军”)。追加(“”);
}
}
championNumber++;
});
$('div#championput')。在('click','a.Remove',function()上{
$(this.parent('div.Champion').remove();
});
$('div#championput')。在('click','a.AddSpell',function()上{
$(
'\
\
被动的\
Q\
W\
E\
R\
\
\
\
\
\
浅黄色\
削弱\
新的\
改变\
错误修正\
\
\
\
\
.appendTo('.Champion[data id='+$(this.parent('div').data('id')+']);
拼写数字++;
});
$('div#championput')。在('click','a.AddChange',function()上{
$(this.next('a.RemoveSpell')。之后(
'\
\
\
浅黄色\
削弱\
新的\
改变\
错误修正\
\
\
');
});
$('div#championput')。在('click','a.RemoveSpell',function()上{
$(this).closest('.Spell').remove();
});
$('div#championput')。在('click','a.RemoveChange',function()上{
$(this).closest('.Change').remove();
});
});
也许最简单的解决方案是在每次用户交互后更新索引。这不是最有效的代码(jQuery.each
都比for
循环慢),但它可以工作():
在表单中添加或删除项目后调用上述函数。最简单的解决方案可能是在每次用户交互后更新索引。这不是最有效的代码(
jQuery.each
都比for
循环慢),但它可以工作():
在表单中添加或删除项后调用上述函数。为什么不使用javascript为每个字符构建对象,而不是为每个条目添加id?如果您提供了此代码的JSFIDLE演示,以使其更易于操作和修改,这将有所帮助。如果这有助于我在一分钟内构建JSFIDLE,我不完全理解为每个字符构建对象的含义。那么您的php脚本是否需要特定的id命名约定?是的,在发送此表单后,我如果可以很容易地以正确的顺序获取它,而不是向每个条目添加id,为什么不使用javascript为每个字符构建一个对象呢?如果您提供了此代码的JSFIDLE演示,以使其更易于操作和修改,这将有所帮助。如果这有助于我在一分钟内构建JSFIDLE,我不完全理解为每个字符构建对象的含义。那么您的php脚本是否需要特定的id命名约定?是的,在发送此表单后,我将很容易以正确的顺序获得。哦,我刚刚意识到我没有包括对法术迷的重新索引,但我希望你能从上面的代码中得到这个想法。哦,我刚刚意识到我没有包括对法术迷的重新索引,但我希望你能从上面的代码中得到这个想法。
renumber = function(){
$('.Champion').each(function( i ){
var championIndex = i + 1;
$(this)
.attr( 'data-id', championIndex )
.find( 'input' )
.attr( 'placeholder', 'Champion ' + championIndex )
.end()
.find( '.Spell' )
.each(function( j ){
var spellIndex = j + 1;
$(this)
.attr( 'data-id', spellIndex )
.find( 'select:first' )
.attr( 'name', 'change[' + championIndex + '][' + spellIndex + ']' )
.next() // input
.attr( 'name', 'championSpell[' + championIndex + '][' + spellIndex + ']' )
.next() // textarea
.attr( 'name', 'SpellDescription[' + championIndex + '][' + spellIndex + ']' )
.next() // 2nd select
.attr( 'name', 'SpellChange[' + championIndex + '][' + spellIndex + ']' );
});
});
};