Mặc dù câu hỏi này đã được trả lời nhiều lần trước đây, tôi nghĩ rằng tôi sẽ thêm vào nó với một câu trả lời đầy đủ và chắc chắn hơn cho người dùng trong tương lai. Câu trả lời chính không giải quyết được vấn đề, nhưng tôi tin rằng có thể tốt hơn để biết / hiểu một số cách khác nhau để hiển thị / ẩn mọi thứ.
.
Thay đổi hiển thị bằng css ()
Đây là cách tôi đã từng làm cho đến khi tôi tìm thấy một số cách khác.
Javascript:
$("#element_to_hide").css("display", "none"); // To hide
$("#element_to_hide").css("display", ""); // To unhide
Ưu điểm:
- Ẩn và không che giấu. Đó là về nó.
Nhược điểm:
- Nếu bạn sử dụng thuộc tính "hiển thị" cho mục đích khác, bạn sẽ phải mã hóa giá trị của giá trị trước khi ẩn. Vì vậy, nếu bạn có "nội tuyến", bạn sẽ phải làm
$("#element_to_hid").css("display", "inline");nếu không nó sẽ mặc định trở lại "chặn" hoặc bất cứ điều gì khác mà nó sẽ bị ép buộc.
- Cho vay chính tả.
Ví dụ: https://jsfiddle.net/4chd6e5r/1/
.
Thay đổi hiển thị bằng addClass () / removeClass ()
Trong khi thiết lập ví dụ cho cái này, tôi thực sự gặp phải một số sai sót trong phương pháp này khiến nó rất không đáng tin cậy.
Css / Javascript:
.hidden {display:none}
$("#element_to_hide").addClass("hidden"); // To hide
$("#element_to_hide").removeClass("hidden"); // To unhide
Ưu điểm:
- Nó giấu .... đôi khi. Tham khảo p1 trên ví dụ.
- Sau khi bỏ ẩn, nó sẽ quay trở lại sử dụng giá trị hiển thị trước đó .... đôi khi. Tham khảo p1 trên ví dụ.
- Nếu bạn muốn lấy tất cả các đối tượng ẩn, bạn chỉ cần làm
$(".hidden").
Nhược điểm:
- Không ẩn nếu giá trị hiển thị được đặt trực tiếp trên html. Tham khảo p2 trên ví dụ.
- Không ẩn nếu màn hình được đặt trong javascript bằng css (). Tham khảo p3 trên ví dụ.
- Mã nhiều hơn một chút vì bạn phải xác định một thuộc tính css.
Ví dụ: https://jsfiddle.net/476oha8t/8/
.
Thay đổi hiển thị bằng cách sử dụng chuyển đổi ()
Javascript:
$("element_to_hide").toggle(); // To hide and to unhide
Ưu điểm:
- Luôn luôn làm việc.
- Cho phép bạn không phải lo lắng về trạng thái trước khi chuyển đổi. Việc sử dụng rõ ràng cho việc này là cho một nút .... chuyển đổi.
- Ngắn gọn và đơn giản.
Nhược điểm:
- Nếu bạn cần biết nó đang chuyển sang trạng thái nào để làm điều gì đó không liên quan trực tiếp, bạn sẽ phải thêm nhiều mã (một câu lệnh if) để tìm hiểu trạng thái của nó.
- Tương tự như con lừa trước, nếu bạn muốn chạy một bộ hướng dẫn có chứa nút chuyển đổi () cho mục đích ẩn, nhưng bạn không biết nếu nó đã bị ẩn, bạn phải thêm một kiểm tra (một câu lệnh if) để tìm hiểu đầu tiên và nếu nó đã bị ẩn, sau đó bỏ qua. Tham khảo p1 của ví dụ.
- Liên quan đến 2 nhược điểm trước đó, sử dụng toggle () cho thứ gì đó được ẩn hoặc hiển thị cụ thể, có thể gây nhầm lẫn cho người khác đọc mã của bạn vì họ không biết họ sẽ chuyển đổi theo cách nào.
Ví dụ: https://jsfiddle.net/cxcawkyk/1/
.
Thay đổi hiển thị bằng cách sử dụng ẩn () / show ()
Javascript:
$("#element_to_hide").hide(); // To hide
$("#element_to_hide").show(); // To show
Ưu điểm:
- Luôn luôn làm việc.
- Sau khi bỏ ẩn, nó sẽ quay trở lại sử dụng giá trị hiển thị trước đó.
- Bạn sẽ luôn biết bạn đang hoán đổi trạng thái nào để bạn:
- không cần thêm nếu câu lệnh để kiểm tra mức độ hiển thị trước khi thay đổi trạng thái nếu trạng thái có vấn đề.
- sẽ không gây nhầm lẫn cho người khác đọc mã của bạn về trạng thái mà bạn đang chuyển sang nếu, nếu trạng thái đó quan trọng.
- Trực giác.
Nhược điểm:
- Nếu bạn muốn bắt chước một chuyển đổi, bạn sẽ phải kiểm tra trạng thái trước và sau đó chuyển sang trạng thái khác. Sử dụng chuyển đổi () thay vì cho những điều này. Tham khảo p2 của ví dụ.
Ví dụ: https://jsfiddle.net/k0ukhmfL/
.
Nhìn chung, tôi sẽ nói tốt nhất là ẩn () / show () trừ khi bạn đặc biệt cần nó để chuyển đổi. Tôi hy vọng bạn tìm thấy thông tin này là hữu ích.
return falsevàoonclick?