Я создаю форму с динамическим количеством опций. Удаление параметров отлично подходит для тех элементов, которые существуют с самого начала, но элементы, которые генерируются динамически, не могут быть удалены. Кто-нибудь знает?
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();
});
Для динамически созданного элемента необходимо использовать делегирование событий:
jQuery('div.options').on('click', 'a.delete_option', function(){
jQuery(this).parent('div').fadeOut();
})
вы должны использовать метод.on вместо этого, чтобы он делегировал событие новым элементам.
jQuery(document).on('click','a.delete_option',function(){
jQuery(this).parent('div').fadeOut();
});
здесь новая скрипка http://jsfiddle.net/rjC6C/
.on
сам по себе не означает делегат . [...]As of jQuery 1.7, the .on() method provides all functionality required for attaching event handlers.[...]
возможности, .on
[...]As of jQuery 1.7, the .on() method provides all functionality required for attaching event handlers.[...]
так .on
это предпочтительный способ добавления прямых и делегировать слушатель, только добавляя селектор как Второй аргумент делает это делегату .
Использовать .on()
jQuery.on('click', 'a.delete_option', function () {
jQuery(this).parent('div').fadeOut();
});