Удаление содержимого контейнера
Есть вот такой js код:
$(document).ready(function (){
$('.element').click(function (){
$('.text_element',this).remove();
$('.delete',this).remove();
});
});
и вот такие контейнеры html: <div class='element'> <div class='text_element'>text_element 1</div> <div class='delete'> X</div> </div> <div class='element'> <div class='text_element'>text_element 2</div> <div class='delete'> X</div> </div> Код выполняет простую задачу: при клике на содержимое одного из контейнера 'element' блоки 'text_element' и 'delete', относящиеся именно к этому контейнеру удаляются. Все работает как надо. Не устраивает лишь одно. Как сделать так, чтобы блоки (и 'text_element', и 'delete') удалялись только при клике на 'delete' и оставались на месте при клике на 'text_element'? Заранее спасибо. |
присвоить событие на класс delete. в обработчике надо вам найти родительский элемент и сделать нужное удаление
|
fi.adm,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function()
{
$('.element').click(function (event)
{
if($(event.target).is(".text_element")) return;
$('.text_element', this).remove();
$('.delete', this).remove();
}
);
}
);
</script>
</head>
<body>
<div class='element'>
<div class='text_element'>text_element 1</div>
<div class='delete'> X</div>
</div>
<div class='element'>
<div class='text_element'>text_element 2</div>
<div class='delete'> X</div>
</div>
</body>
</html>
|
Всем спасибо))
|
Вот еще решение, если нужно.
$(".delete").click(function(){
$(this).parent().find(".text_element").remove();
$(this).remove;
});
Для большей гибкости при нефиксированном количестве вложений, используйте вместо ".parent()" функцию ".closest(".element")" она в отличии от parent перейдет не на один уровень вверх, а на любое количество пока не дойдет до указанного элемента. |
JusteG,
если структура как указано выше то можно так
$(".delete").click(function(){
$(this).prev().add(this).remove();
});
|
рони, изящно. Спасибо. Простите меня невежду, я недавно пишу на js css (x)html, хотя программист я опытный. Есть к чему стремиться.
|
| Часовой пояс GMT +3, время: 00:49. |