Data-dismiss полностью удаляет элемент. Вместо этого используйте метод jQuery .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()
})
})
а затем измените data-dismiss на data-hide в разметке. Пример на jsfiddle .
$("." + $(this).attr("data-hide")).hide()
Это скроет все элементы с классом, указанным в data-hide, то есть: data-hide="alert"
скроет все элементы с классом предупреждения.
Xeon06 предоставил альтернативное решение:
$(this).closest("." + $(this).attr("data-hide")).hide()
Это скроет только ближайший родительский элемент. Это очень полезно, если вы не хотите присваивать каждому оповещению уникальный класс. Обратите внимание, что, однако, вам необходимо разместить кнопку закрытия внутри предупреждения.
Определение .closest из jquery doc :
Для каждого элемента в наборе получите первый элемент, соответствующий селектору, путем тестирования самого элемента и обхода его предков в дереве DOM.
alert
) На странице. Решением для этого было бы заменить содержимое обратного вызова этой строкой$(this).closest("." + $(this).attr("data-hide")).hide();
, которая повлияет только на ближайший родительский элемент, поскольку кнопка отклонения обычно помещается в оповещение, на которое она влияет.