jQuery 如何 add/remove 从动态创建的 div 中动态创建元素?
jQuery How to add/remove dynamically created elements from dynamically created divs?
我正在尝试创建一个包含 3 个字段的表单。它还具有用于添加另一组称为模块的字段的按钮。这部分有效。创建的每个模块随后应该能够在其下方创建更多称为任务的字段集。
层次结构如下:
Project:
Module:
Task 1:
Task 2:
Module 2:
Task 3:
Task 4:
我遇到的问题是在添加任务时。您可以添加模块,它们会正确地按下原始表单按钮。当我尝试将任务添加到位于模块 div 中的 div 时,两者都是动态创建的,它会将任务添加到错误的位置,它们只是 运行 通过它们下面的内容。下面的fiddle是我现在的状态:
您可以创建一个全局计数器,并将此计数器附加到您要插入任务的容器中:
'<div class="div_task_'+count+'"></div>'
'<input type="button" value="Add Task" id="f_addTask" onclick="addTask('+count+')" />'
'<input type="button" value="Undo Add" id="f_undoAddTask" onclick="removeTask('+count+')" />'
然后上JS
function addTask(counter){
$('#div_task_'+counter).append('')
};
我使用 fiddle 迭代中使用的 jQuery 解决了它:
http://jsfiddle.net/smkarber/ezdk96z3/19/
基本上,我必须使用家庭关系来导航,并且由于层次结构始终相同,因此非常可靠。
$('#div_form').on('click', '.f_addTask', function() {
$(this).parent().parent().children('.div_task').append('<div class="p_task">
<label for="t_name">Task Name: </label><input type="textbox" class="t_name p_fields"
/><br/><label for="t_desc">Description: </label><input type="textbox" class="t_desc
p_fields" /><br/><label
for="t_date">Due Date: </label><input type="date" class="t_date p_fields" /><br/>
</div>');
});
$('#div_form').on('click', '.f_undoAddTask', function() {
$(this).parent().parent().children('.div_task').children('.p_task:last')
.remove();
});
我正在尝试创建一个包含 3 个字段的表单。它还具有用于添加另一组称为模块的字段的按钮。这部分有效。创建的每个模块随后应该能够在其下方创建更多称为任务的字段集。
层次结构如下:
Project:
Module:
Task 1:
Task 2:
Module 2:
Task 3:
Task 4:
我遇到的问题是在添加任务时。您可以添加模块,它们会正确地按下原始表单按钮。当我尝试将任务添加到位于模块 div 中的 div 时,两者都是动态创建的,它会将任务添加到错误的位置,它们只是 运行 通过它们下面的内容。下面的fiddle是我现在的状态:
您可以创建一个全局计数器,并将此计数器附加到您要插入任务的容器中:
'<div class="div_task_'+count+'"></div>'
'<input type="button" value="Add Task" id="f_addTask" onclick="addTask('+count+')" />'
'<input type="button" value="Undo Add" id="f_undoAddTask" onclick="removeTask('+count+')" />'
然后上JS
function addTask(counter){
$('#div_task_'+counter).append('')
};
我使用 fiddle 迭代中使用的 jQuery 解决了它:
http://jsfiddle.net/smkarber/ezdk96z3/19/
基本上,我必须使用家庭关系来导航,并且由于层次结构始终相同,因此非常可靠。
$('#div_form').on('click', '.f_addTask', function() {
$(this).parent().parent().children('.div_task').append('<div class="p_task">
<label for="t_name">Task Name: </label><input type="textbox" class="t_name p_fields"
/><br/><label for="t_desc">Description: </label><input type="textbox" class="t_desc
p_fields" /><br/><label
for="t_date">Due Date: </label><input type="date" class="t_date p_fields" /><br/>
</div>');
});
$('#div_form').on('click', '.f_undoAddTask', function() {
$(this).parent().parent().children('.div_task').children('.p_task:last')
.remove();
});