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"
、alert クラスのすべての要素が非表示になります。
Xeon06は代替ソリューションを提供しました。
$(this).closest("." + $(this).attr("data-hide")).hide()
これにより、最も近い親要素のみが非表示になります。これは、各アラートに一意のクラスを与えたくない場合に非常に便利です。ただし、アラート内に閉じるボタンを配置する必要があることに注意してください。
jquery docからの .closest の定義:
セット内の各要素について、要素自体をテストし、DOM ツリー内のその祖先をたどって、セレクターに一致する最初の要素を取得します。