Odrzucenie danych całkowicie usuwa element. Zamiast tego użyj metody .hide () jQuery.
Szybka metoda naprawy:
Używanie wbudowanego javascript do ukrycia elementu onclick w następujący sposób:
<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/
Powinno to jednak być używane tylko wtedy, gdy jesteś leniwy (co nie jest dobre, jeśli potrzebujesz aplikacji, którą można utrzymać).
Metoda zrób to dobrze:
Utwórz nowy atrybut danych w celu ukrycia elementu.
JavaScript:
$(function(){
$("[data-hide]").on("click", function(){
$("." + $(this).attr("data-hide")).hide()
// -or-, see below
// $(this).closest("." + $(this).attr("data-hide")).hide()
})
})
a następnie zmień odrzucanie danych na ukrywanie danych w znacznikach. Przykład na jsfiddle .
$("." + $(this).attr("data-hide")).hide()
Spowoduje to ukrycie wszystkich elementów z klasą określoną w data-hide, tj .: data-hide="alert"
ukryje wszystkie elementy z klasą alert.
Xeon06 dostarczył alternatywne rozwiązanie:
$(this).closest("." + $(this).attr("data-hide")).hide()
Spowoduje to ukrycie tylko najbliższego elementu nadrzędnego. Jest to bardzo przydatne, jeśli nie chcesz przypisywać każdemu alertowi unikalnej klasy. Należy jednak pamiętać, że w alercie należy umieścić przycisk zamykania.
Definicja .closest z dokumentu jquery :
Dla każdego elementu w zestawie pobierz pierwszy element, który pasuje do selektora, testując sam element i przechodząc przez jego przodków w drzewie DOM.
alert
) Na stronie. Rozwiązaniem byłoby zastąpienie treści wywołania zwrotnego tą linią$(this).closest("." + $(this).attr("data-hide")).hide();
, co wpłynie tylko na najbliższy element nadrzędny, ponieważ przycisk odrzucenia jest zwykle umieszczony w alercie, na który ma wpływ.