Скрыть Родительский div при нажатии с помощью jQuery
Поэтому я пытаюсь написать супер простой скрипт, который позволит пользователю бросить любую ссылку или кнопку с классом .close
внутри div, и когда эта ссылка .close
нажата, она автоматически закрывает родительский контейнер.
Вот с чем я сейчас пытаюсь работать: JSFiddle
Код, который я сейчас пытаюсь использовать:
HTML
<div class="well notice bg-green">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<p>This is a notice that is green.</p>
</div>
CSS
.well {
background: #f9f9f9;
border-color: #f1f1f1;
border-style: solid;
border-width: 1px;
padding: 15px 20px;
}
.notice {
margin: 15px 0;
padding: 0px 15px;
}
.well.bg-green {
background: #dff0d8;
border-color: #d6e9c6;
color: #468847;
}
.close {
color: #000;
filter: alpha(opacity=20);
float: right;
font-size: 21px;
font-weight: bold;
line-height: 1;
margin-top: 15px;
opacity: .2;
text-shadow: 0 1px 0 #fff;
}
.close:hover, .close:focus {
color: #000;
cursor: pointer;
filter: alpha(opacity=50);
opacity: .5;
text-decoration: none;
}
button.close {
background: transparent;
border: 0;
cursor: pointer;
padding: 0;
-webkit-appearance: none;
-moz-appearance: none;
}
JavaScript (jQuery)
$('.close').live("click", function () {
$(this).parents('div').fadeOut;
});
Дайте мне знать, если мой вопрос не имеет смысла или если требуется дополнительная проработка. Спасибо!5 ответов:
Две проблемы:
live()
не существует в версии jQuery в вашей скрипке (устаревшей в 1.7, удаленной в 1.9)fadeOut
- это функция (для ее выполнения вам не хватало parens)$('.close').on("click", function () { $(this).parents('div').fadeOut(); });
Если вы хотите, чтобы он работал на динамических элементах, используйте эту версию:
$(document).on('click', '.close', function () { $(this).parents('div').fadeOut(); });
Рабочая демонстрация http://jsfiddle.net/gL9rw/
Проблема была
.live
, которая теперь устарела.Если вы хотите: что не так с методом jQuery live?
:)
Код
$('.close').on("click", function () { $(this).parents('div').fadeOut(); });
$('.close').click(function () { $(this).parent().fadeOut(); });
Рекомендуется использовать
.click()
теперь вместо устаревшего.live()
Попробуйте это, это должно быть
fadeOut()
НеfadeOut
$('.close').click(function () { $(this).parents('div').fadeOut(); });