用jquery按正确顺序动态插入输入
Dynamically inserting inputs with jquery in correct order
我现在的主要问题是新输入叫做new change总是插入到第一个输入之后所以不是1 2 3 4 5而是1 5 4 3 2 1
另一件事是,在点击添加更改锚后,删除法术会在所有。changediv
这里是工作JS-fiddle http://jsfiddle.net/9jbngbhb/
这里是html,没什么特别的
<a href="#" id="AddChampion">Add Champion</a>
<form name="second_form" id="second_form" method="POST">
<div id="ChampionInput">
</div>
<br><br>
<input type="submit" name="submit">
</form>
这里是jquery:
$(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>');
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="'+$(this).children( "div.Change").length+'">'
<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>'
<div class="Change">'
<textarea type="text" size="20" name="SpellDescription['+$(this).parent('div').data('id')+'][]" placeholder="Enter Description" />'
<select name="SpellChange['+$(this).parent('.Champion').data('id')+'][0][]">'
<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>'
</div>'
').appendTo('.Champion[data-id='+$(this).parent('div').data('id')+']');
});
$('div#ChampionInput').on('click', 'a.AddChange',function(){
//alert($(this).parent("div.Spell").children( "div.Change").length);
$(this).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("div.Spell").children( "div.Change").length+'][]">'
<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();
});
});
Replace
$('div#ChampionInput').on('click', 'a.AddChange',function(){
//alert($(this).parent("div.Spell").children( "div.Change").length);
$(this).after(
$('div#ChampionInput').on('click', 'a.AddChange',function(){
var spell = $(this).parents("div.Spell").first();
var changes = spell.children("div.Change");
var changeId = changes.length;
console.log(spell);
console.log(changes);
console.log(changeId);
//console.log($(this).parent().children("div.Change").length);
changes.last().after(
这应该提供spell
父,changes
子和新change
的id。
相关文章:
- 如何动态插入jquery代码
- 动态插入的表:JQuery未检测到最后一行
- 使用JavaScript动态插入DIV的成本有多高
- 将对象动态插入到现有对象中
- 使用enyo.js将数据动态插入表中
- 在iframe代码中动态插入子id
- 在DIV中动态插入HTML并访问新元素
- 使用JQuery动态插入/删除字段
- EmberJS:动态插入组件
- 如何使用JS在中间输入文本中动态插入字符
- 动态插入并从数组中检索键值对 - Javascript
- 如何使动态插入的 html 对象可单击
- 如何在一个页面上动态插入数组中的项
- 在动态插入的表行中使用引导开关
- 动态插入Div会破坏KnockoutJS数据绑定
- 使用Ember.js将新行动态插入到Table上下文中
- 在表单未传递的情况下使用.html()动态插入隐藏文本字段
- 使用javascript创建动态插入表单
- 如何在动态插入的html文件中使用onload事件
- 使用Javascript、Jquery或Ajax动态插入Yahoo Merchant Store目录标签