Sự khác biệt giữa jQuery .hide () và .css (“display”, “none”)


81

Có sự khác biệt nào giữa

jQuery('#id').show() and jQuery('#id').css("display","block")

jQuery('#id').hide() and jQuery('#id').css("display","none")

Câu trả lời:


95

jQuery ('# id'). css ("display", "block")

Các displaybất động sản có thể có nhiều giá trị có thể, trong đó có block, inline, inline-block, và nhiều hơn nữa .

Các .show()phương pháp không thiết lập nó nhất thiết phải đến block, mà đúng hơn là reset nó với những gì bạn định nghĩa nó (nếu có).

Trong mã nguồn jQuery, bạn có thể thấy cách họ đặt thuộc displaytính thành "" (một chuỗi trống) để kiểm tra xem nó là gì trước bất kỳ thao tác jQuery: liên kết nhỏ nào .

Mặt khác, ẩn được thực hiện thông qua display: none;, vì vậy bạn có thể xem xét .hide().css("display", "none")tương đương với một số điểm.

Bạn nên sử dụng .show().hide()dù thế nào đi nữa để tránh bất kỳ gotcha nào (thêm vào đó, chúng ngắn hơn).


3
Do thực hiện hiển thị / ẩn kiểm tra toàn diện, các phương pháp này chậm hơn đáng kể. Nếu bạn gọi phương thức lặp lại, bạn có thể muốn sử dụng phương thức css.
Gqqnbig

33

Sự khác biệt giữa show () và css ({'display': 'block'})

Giả sử bạn có điều này ngay từ đầu:

<span id="thisElement" style="display: none;">Foo</span>

khi bạn gọi:

$('#thisElement').show();

bạn sẽ nhận được:

<span id="thisElement" style="">Foo</span>

trong khi:

$('#thisElement').css({'display':'block'});

làm:

<span id="thisElement" style="display: block;">Foo</span>

vì vậy, có một sự khác biệt.

Sự khác biệt giữa hide () và css ({'display': 'none'})

tương tự như trên nhưng thay đổi chúng thành hide () và hiển thị ':' none '......

Một điểm khác biệt khác Khi .hide()được gọi là giá trị của thuộc tính hiển thị được lưu trong bộ đệm dữ liệu của jQuery, vì vậy khi .show()được gọi, giá trị hiển thị ban đầu được khôi phục!


6

Có có sự khác biệt trong việc thực hiện của cả hai: jQuery('#id').show()là chậm hơn so với jQuery('#id').css("display","block")như trong trường hợp cựu việc làm thêm là để được thực hiện để lấy tình trạng ban đầu từ bộ nhớ cache jquery như hiển thị được không phải là một thuộc tính nhị phân nó có thể được inline, block, none, tablevv tương tự là trường hợp với hide()phương pháp.

Xem: http://jsperf.com/show-vs-addclass


2
và hiệu suất trở nên quan trọng khi sử dụng quá nhiều chế độ hiển thị và ẩn trong trang.
aquasan

4

không khác nhau

Không có tham số, phương thức .hide () là cách đơn giản nhất để ẩn một phần tử:

$ ('. target'). hide (); Các phần tử phù hợp sẽ bị ẩn ngay lập tức, không có hoạt ảnh. Điều này gần tương đương với việc gọi .css ('display', 'none'), ngoại trừ việc giá trị của thuộc tính hiển thị được lưu trong bộ đệm dữ liệu của jQuery để hiển thị sau này có thể được khôi phục về giá trị ban đầu. Nếu một phần tử có giá trị hiển thị là nội tuyến, sau đó bị ẩn và hiển thị, nó sẽ một lần nữa được hiển thị nội tuyến.

Tương tự về chương trình


Ngoại trừ việc .show()sẽ thiết lập thích hợp displaybất động sản, trong khi bạn sẽ phải chọn thuộc tính thích hợp bằng tay, với.css()
Cerbrus

3

Có một sự khác biệt.

jQuery('#id').css("display","block") sẽ luôn đặt phần tử bạn muốn hiển thị dưới dạng khối.

jQuery('#id').show() will et là kiểu hiển thị ban đầu của nó là gì, chẳng hạn như display: inline.

Xem Jquery Doc


Lưu ý rằng điều này chỉ đúng trong các phiên bản jQuery sau này. 1.3, ví dụ, không đúng với điều này.
Troy Alford

2

Bạn có thể xem mã nguồn (đây là v1.7.2).

Ngoại trừ các hình ảnh động mà chúng ta có thể thiết lập, điều này cũng giữ trong bộ nhớ phong cách hiển thị cũ (mà không phải là trong mọi trường hợp block, nó cũng có thể inline, table-cell...).


1

xem http://api.jquery.com/show/

Không có tham số, phương thức .show () là cách đơn giản nhất để hiển thị một phần tử:

$ ('. target'). show ();

Các yếu tố phù hợp sẽ được hiển thị ngay lập tức, không có hoạt ảnh. Điều này gần tương đương với việc gọi .css ('display', 'block'), ngoại trừ việc thuộc tính hiển thị được khôi phục về bất kỳ thứ gì ban đầu. Nếu một phần tử có giá trị hiển thị là nội tuyến, sau đó bị ẩn và hiển thị, nó sẽ một lần nữa được hiển thị nội tuyến.


Đẹp giải thích .. Cảm ơn :)
Sashi Kant
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.