Відхилення даних повністю видаляє елемент. Використовуйте натомість метод jQuery's .hide ().
Метод виправлення:
Використовуючи вбудований javascript, щоб приховати елемент onclick таким чином:
<div class="alert" style="display: none">
<a class="close" onclick="$('.alert').hide()">×</a>
<strong>Warning!</strong> Best check yo self, you're not looking too good.
</div>
<a href="#" onclick="$('alert').show()">show</a>
http://jsfiddle.net/cQNFL/
Це, однак, слід використовувати лише в тому випадку, якщо ви ліниві (що не дуже добре, якщо ви хочете підтримувати додаток).
Метод "зроби правильно":
Створіть новий атрибут даних для приховування елемента.
Javascript:
$(function(){
$("[data-hide]").on("click", function(){
$("." + $(this).attr("data-hide")).hide()
// -or-, see below
// $(this).closest("." + $(this).attr("data-hide")).hide()
})
})
а потім змінити відхилення даних на приховання даних у розмітці. Приклад на jsfiddle .
$("." + $(this).attr("data-hide")).hide()
Це приховає всі елементи з класом, визначеним у схованні даних, тобто: data-hide="alert"
приховає всі елементи з класом оповіщення.
Xeon06 запропонував альтернативне рішення:
$(this).closest("." + $(this).attr("data-hide")).hide()
Це приховає лише найближчий батьківський елемент. Це дуже корисно, якщо ви не хочете надавати кожному попередження унікальний клас. Зауважте, що, однак, потрібно розмістити кнопку закриття в межах попередження.
Визначення .closest від jquery doc :
Для кожного елемента в наборі знайдіть перший елемент, який відповідає селектору, випробувавши сам елемент і проходьте його предків у дереві DOM.
alert
) на сторінці. Рішенням цього може стати заміна вмісту зворотного виклику на цей рядок$(this).closest("." + $(this).attr("data-hide")).hide();
, що вплине лише на найближчий батьківський елемент, оскільки кнопка відхилення зазвичай розміщується в межах попередження, на яке вона впливає.