データを閉じると、要素が完全に削除されます。代わりにjQueryの.hide()メソッドを使用してください。
fix-it-quickメソッド:
次のようにインライン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()
これにより、最も近い親要素のみが非表示になります。これは、各アラートに一意のクラスを与えたくない場合に非常に役立ちます。ただし、アラート内に閉じるボタンを配置する必要があることに注意してください。
jquery docからの.closestの定義:
セット内の各要素について、要素自体をテストし、DOMツリー内のその祖先をたどって、セレクターに一致する最初の要素を取得します。
alert
により、ページ上で同じクラス(つまり)を持つすべての要素が非表示になります。これに対する解決策は、コールバックの内容をこの行に置き換えることです。これは$(this).closest("." + $(this).attr("data-hide")).hide();
、最も近い親要素にのみ影響し、通常、影響を受けるアラート内に閉じるボタンが配置されていることを確認します。