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。 Example at jsfiddle.
$("." + $(this).attr("data-hide")).hide()
这将隐藏所有具有在 data-hide 中指定的类的元素,即:data-hide="alert" 将隐藏所有具有警报类的元素。
Xeon06 提供了另一种解决方案:
$(this).closest("." + $(this).attr("data-hide")).hide()
这只会隐藏最近的父元素。如果您不想给每个警报一个唯一的类,这将非常有用。但是请注意,您需要将关闭按钮放在警报中。
.closest from jquery doc的定义:
对于集合中的每个元素,通过测试元素本身并向上遍历其在 DOM 树中的祖先来获取与选择器匹配的第一个元素。