L'eliminazione dei dati rimuove completamente l'elemento. Usa invece il metodo .hide () di jQuery.
Il metodo fix-it-quick:
Utilizzando javascript in linea per nascondere l'elemento su clic in questo modo:
<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/
Questo dovrebbe tuttavia essere usato solo se sei pigro (il che non va bene se vuoi un'app manutenibile).
Il metodo fai-da-te:
Crea un nuovo attributo di dati per nascondere un elemento.
Javascript:
$(function(){
$("[data-hide]").on("click", function(){
$("." + $(this).attr("data-hide")).hide()
// -or-, see below
// $(this).closest("." + $(this).attr("data-hide")).hide()
})
})
e quindi modifica data-ignora in data-hide nel markup. Esempio su jsfiddle .
$("." + $(this).attr("data-hide")).hide()
Questo nasconderà tutti gli elementi con la classe specificata in data-hide, cioè: data-hide="alert"
nasconderà tutti gli elementi con la classe alert.
Xeon06 ha fornito una soluzione alternativa:
$(this).closest("." + $(this).attr("data-hide")).hide()
Questo nasconderà solo l'elemento genitore più vicino. Questo è molto utile se non vuoi assegnare a ogni avviso una classe unica. Tieni presente che, tuttavia, devi posizionare il pulsante di chiusura all'interno dell'avviso.
Definizione di .closest da jquery doc :
Per ogni elemento nel set, ottieni il primo elemento che corrisponde al selettore testando l'elemento stesso e attraversando i suoi antenati nell'albero DOM.
alert
) nella pagina. Una soluzione per questo sarebbe sostituire il contenuto della richiamata con questa riga$(this).closest("." + $(this).attr("data-hide")).hide();
, che interesserà solo l'elemento genitore più vicino, visto che il pulsante di chiusura è tipicamente posizionato all'interno dell'avviso che interessa.