jQuery删除父onclick不适用于新元素

时间:2014-01-20 16:04:09

标签: javascript jquery html

我正在创建一个包含动态数量选项的表单。删除选项适用于从一开始就存在的项目,但无法删除动态生成的项目。任何人都有线索?

JSFiddle:http://jsfiddle.net/Kxr4C/

HTML:

<div class="options">
  <div><input type="text" name="option[]" value="Option A"> <a href="#" class="delete_option">Delete</a></div>
  <div><input type="text" name="option[]" value="Option B"> <a href="#" class="delete_option">Delete</a></div>
  <div><input type="text" name="option[]" value="Option C"> <a href="#" class="delete_option">Delete</a></div>
</div>
<a href="#" class="new_option">Add a new option</a>

使用Javascript:

jQuery('a.new_option').click(function(){
  jQuery('div.options').append('<div><input type="text" name="option[]" value=""> <a href="#" class="delete_option">Delete</a></div>');
});

jQuery('a.delete_option').click(function(){
  jQuery(this).parent('div').fadeOut();
});

3 个答案:

答案 0 :(得分:3)

您需要将event delegation用于动态创建的元素:

jQuery('div.options').on('click', 'a.delete_option', function(){
  jQuery(this).parent('div').fadeOut();
})

答案 1 :(得分:0)

使用.on()

jQuery.on('click', 'a.delete_option', function () {
    jQuery(this).parent('div').fadeOut();
});

Event Delegation

答案 2 :(得分:0)

您应该使用.on方法,以便将事件委托给新元素。

jQuery(document).on('click','a.delete_option',function(){
jQuery(this).parent('div').fadeOut();
});

这是一个新的小提琴 http://jsfiddle.net/rjC6C/