2014-01-03 5 views
0

У меня есть поля в форме и позволяют пользователю добавлять или удалять элементы. Первая добавленная подсветка удалит ok, но любые добавленные не удаляются.Почему jquery не удаляет прикрепленный div

Я попытался следующие, и не везло jQuery $(this).remove() not working after append

Вот jsfiddle кода ниже http://jsfiddle.net/3PzmH/3/

<!-- html --> 
<div class="features"></div> 

// js 
var highlight = '<div class="form-group"><label for="highlight" class="col-sm-3 col-lg-2 control-label">Hightlight:</label><div class="col-sm-9 col-lg-3 controls"><input type="text" name="highlight_name[]" data-rule-required="true" class="form-control" value="Hightlight Name"></div><div class="col-sm-9 col-lg-7 controls"><textarea name="highlight_description[]" class="form-control" rows="3" placeholder="Description for highlight"></textarea><a href="" class="pull-right showhouse-text remove_highlight"><i class="fa fa-plus"></i> Remove Highlight</a></div></div>'; 
$('.features').append(highlight); 

$('#add_highlight').click(function(){ 
    $('.features').append(highlight); 
}); 

$('.remove_highlight').on("click", function(){ 
    $(this).closest('.form-group').remove(); 
}); 

ответ

2

Делегат событие к статическому родительского элемента

$('.features').on("click", '.remove_highlight', function(){ 
    $(this).closest('.form-group').remove(); 
}); 

FIDDLE

1

Вы должны использовать делегирование событий для динамически добавляемых элементов

$('.features').on("click",'.remove_highlight', function(){ 
    $(this).closest('.form-group').remove(); 
}); 

DEMO

0

, потому что динамически добавленный элемент Dos не связывает какой-либо функции на нем.

использовать событие делегация

$('.features').on('click', '.remove_highlight', function() { 
    $(this).closest('.form-group').remove(); 
}); 
0

Пожалуйста, используйте делегата. Обратитесь к обновленной скрипке.

http://jsfiddle.net/3PzmH/7/

$(document).delegate('.remove_highlight',"click", function(){ 
    $(this).closest('.form-group').remove(); 
}); 
+0

В зависимости от версии JQuery это может быть не лучший подход, смотрите здесь: http://api.jquery.com/delegate/ «По состоянию на JQuery 1.7, .delegate() был заменен методом .on(). Однако для более ранних версий он остается наиболее эффективным средством для использования делегирования делегирования. Дополнительная информация о привязке событий и делегировании содержится в методе .on(). " –

+0

Спасибо, Джош Смикус. –

Смежные вопросы