jQuery 删除父字段集
jQuery Remove Parent Fieldset
我有一个表单,其中包含同一字段集的多个实例。您可以通过单击 "Add a Field."
添加更多字段集
该页面以 5 个字段集开头。如果您单击 "Remove,",背景颜色将变为红色(这样您就可以知道将删除哪个字段集)。
如果您添加更多字段,这些字段集将不会响应 "Remove" 按钮,即使它们具有与页面开始的代码完全相同的代码,并且它们被添加到相同的表格.
你能看看我的代码并告诉我为什么添加的字段不会删除而页面上开始的字段会删除吗?
https://jsfiddle.net/Lc510xmn/1/
// Adds a new field set to the form
$('[data-action="addField"]').click(function(){
var fieldSet = '<fieldset><input type="text" name="field"><button type="button" data-action="removeField">Remove</button></fieldset>';
$('form').append(fieldSet);
return false;
});
// Changes the background to red instead of removing
$('[data-action="removeField"]').click(function(){
$(this).parents('fieldset').css('background-color','red');
return false;
});
试试这个 $(this).parents('fieldset').remove()
绑定事件不适用于动态 added/created 元素,因此您需要将事件委托给不会动态操作的第一个父元素(使用 jQuery
或 JavaScript
).
// jQuery 1.4.3+
$( elements ).delegate( selector, events, data, handler );
// jQuery 1.7+
$( elements ).on( events, selector, data, handler );
您还可以阅读 Event binding on dynamically created elements。
所以你应该像这样更改你的代码:
// jQuery 1.7+
$('form').on('click', '[data-action="removeField"]', function() {
$(this).parents('fieldset').css('background-color', 'red');
return false;
});
更新的 js fiddle 在这里
https://jsfiddle.net/Lc510xmn/2/
$(function(){
$('[data-action="addField"]').click(function(){
var fieldSet = '<fieldset><input type="text" name="field"><button type="button" data-action="removeField">Remove</button></fieldset>';
$('form').append(fieldSet);
return false;
});
$("#fields").on("click", '[data-action="removeField"]', function(event){
$(this).parents('fieldset').css('background-color','red');
return false;
});
});
我有一个表单,其中包含同一字段集的多个实例。您可以通过单击 "Add a Field."
添加更多字段集该页面以 5 个字段集开头。如果您单击 "Remove,",背景颜色将变为红色(这样您就可以知道将删除哪个字段集)。
如果您添加更多字段,这些字段集将不会响应 "Remove" 按钮,即使它们具有与页面开始的代码完全相同的代码,并且它们被添加到相同的表格.
你能看看我的代码并告诉我为什么添加的字段不会删除而页面上开始的字段会删除吗?
https://jsfiddle.net/Lc510xmn/1/
// Adds a new field set to the form
$('[data-action="addField"]').click(function(){
var fieldSet = '<fieldset><input type="text" name="field"><button type="button" data-action="removeField">Remove</button></fieldset>';
$('form').append(fieldSet);
return false;
});
// Changes the background to red instead of removing
$('[data-action="removeField"]').click(function(){
$(this).parents('fieldset').css('background-color','red');
return false;
});
试试这个 $(this).parents('fieldset').remove()
绑定事件不适用于动态 added/created 元素,因此您需要将事件委托给不会动态操作的第一个父元素(使用 jQuery
或 JavaScript
).
// jQuery 1.4.3+
$( elements ).delegate( selector, events, data, handler );
// jQuery 1.7+
$( elements ).on( events, selector, data, handler );
您还可以阅读 Event binding on dynamically created elements。
所以你应该像这样更改你的代码:
// jQuery 1.7+
$('form').on('click', '[data-action="removeField"]', function() {
$(this).parents('fieldset').css('background-color', 'red');
return false;
});
更新的 js fiddle 在这里 https://jsfiddle.net/Lc510xmn/2/
$(function(){
$('[data-action="addField"]').click(function(){
var fieldSet = '<fieldset><input type="text" name="field"><button type="button" data-action="removeField">Remove</button></fieldset>';
$('form').append(fieldSet);
return false;
});
$("#fields").on("click", '[data-action="removeField"]', function(event){
$(this).parents('fieldset').css('background-color','red');
return false;
});
});