Loại bỏ dữ liệu sẽ loại bỏ hoàn toàn phần tử. Sử dụng phương thức .hide () của jQuery để thay thế.
Phương pháp sửa chữa nhanh chóng:
Sử dụng javascript nội tuyến để ẩn phần tử onclick như sau:
<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/
Tuy nhiên, điều này chỉ nên được sử dụng nếu bạn lười biếng (điều này không tốt nếu bạn muốn một ứng dụng có thể bảo trì).
Phương pháp làm đúng:
Tạo một thuộc tính dữ liệu mới để ẩn một phần tử.
Javascript:
$(function(){
$("[data-hide]").on("click", function(){
$("." + $(this).attr("data-hide")).hide()
// -or-, see below
// $(this).closest("." + $(this).attr("data-hide")).hide()
})
})
và sau đó thay đổi loại bỏ dữ liệu thành ẩn dữ liệu trong đánh dấu. Ví dụ tại jsfiddle .
$("." + $(this).attr("data-hide")).hide()
Điều này sẽ ẩn tất cả các phần tử với lớp được chỉ định trong data-hide, nghĩa là: data-hide="alert"
sẽ ẩn tất cả các phần tử với lớp alert.
Xeon06 đã cung cấp một giải pháp thay thế:
$(this).closest("." + $(this).attr("data-hide")).hide()
Điều này sẽ chỉ ẩn phần tử cha gần nhất. Điều này rất hữu ích nếu bạn không muốn cấp cho mỗi cảnh báo một lớp duy nhất. Xin lưu ý rằng, tuy nhiên, bạn cần đặt nút đóng trong cảnh báo.
Định nghĩa của .closest từ jquery doc :
Đối với mỗi phần tử trong tập hợp, hãy lấy phần tử đầu tiên phù hợp với bộ chọn bằng cách kiểm tra chính phần tử đó và duyệt qua tổ tiên của nó trong cây DOM.
alert
) trên trang. Giải pháp cho điều này là thay thế nội dung của lệnh gọi lại bằng dòng này$(this).closest("." + $(this).attr("data-hide")).hide();
, dòng này sẽ chỉ ảnh hưởng đến phần tử mẹ gần nhất, vì nút loại bỏ thường được đặt trong cảnh báo mà nó ảnh hưởng.