Вход

Просмотр полной версии : После функции append удалить элемент который появился


shaltay
04.05.2011, 19:13
Доброго времени.
Есть скрипт:

$(document).ready(function() {

$('.elem').click(function(){
$('#itog').append('<div class="work">надпись</div>');
});

$('.work').click(function(){
$(this).hide();
});

});



Но этот код не работает. Дивы появляются, но уже не удаляются. В чем дело?
Заранее спасибо!

ASerputko
04.05.2011, 19:26
Используй $(this).remove();
вместо $(this).hide();

$(document).ready(function() {
$('.elem').click(function(){
$('#itog').append('<div class="work">надпись</div>');
});
$('.work').click(function(){
$(this).remove();
});
});

shaltay
04.05.2011, 19:46
СПасибо за совет, но так тоже не работает. Да и хотелось бы вообще fadeOut сделать, но так тоже не работает.

walik
04.05.2011, 19:48
Вы вешаете событие до того как элемент был добавлен на страницу.
Попробуйте так:

$(document).ready(function() {

$('.elem').click(function(){
$('#itog').append('<div class="work">надпись</div>');
$('.work').click(function(){
$(this).hide();
});
});
});

shaltay
04.05.2011, 19:54
Вы вешаете событие до того как элемент был добавлен на страницу.


Вот теперь работает все! Спасибо большое!

kalina
06.06.2011, 13:59
При многократном нажатии Append дублируется. Как этого избежать?
Прошу помощи...

nikita.mmf
06.06.2011, 15:20
1-ый способ:

$(document).ready(function() {
$('#itog').delegate(".work", "click", function( e ){
$(e.currentTarget).hide();
});
$('.elem').click(function(){
$('#itog').append('<div class="work">надпись</div>');
});
});

2-ой способ:

$(document).ready(function() {
$('.elem').click(function(){
$('<div class="work">надпись</div>')
.click(funcion(){$(this).hide();})
.appendTo('#itog');
});
});

kalina
06.06.2011, 18:18
Не работают... Ни тот ни другой :(

walik
06.06.2011, 18:45
$(function() {
$('.elem').click(function() {
if (!$(this).has('.work').length)
$('<div class="work">Work</div>').appendTo('.elem');
});
$('.work').live('click', function() {
$(this).hide();
});
});

kalina
07.06.2011, 16:19
Работает! :)
$(this).hide();
видимо лучше заменить на
$(this).remove();
Спасибо!