JQuery .hide () ve .css ("display", "none") arasındaki fark


81

Arasında herhangi bir fark var mı

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

ve

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

Yanıtlar:


95

jQuery ('# id'). css ("görüntü", "blok")

displayMalıdır aralarında birçok olası değerleri, sahip olabilir block, inline, inline-blockve daha çok fazlası .

.show()Yöntemi mutlaka ayarlayın vermez block, aksine sen (eğer hiç) bunu açıklayan şeyin sıfırlar.

JQuery kaynak kodunda, displayherhangi bir jQuery işleminden önce ne olduğunu kontrol etmek için özelliği "" (boş bir dize) olarak nasıl ayarladıklarını görebilirsiniz : küçük bağlantı .

Öte yandan, gizleme yoluyla yapılır display: none;, böylece bir noktayı düşünebilirsiniz .hide()ve .css("display", "none")eşdeğerdir.

Herhangi bir hasardan kaçınmak için .show()ve .hide()yine de kullanmanız önerilir (artı, daha kısadırlar).


3
Kapsamlı kontrol göster / gizle performansları nedeniyle, yöntemler oldukça yavaştır. Yöntemi tekrar tekrar çağırırsanız, css yöntemini kullanmak isteyebilirsiniz.
Gqqnbig

33

Show () ve css ({'display': 'block'}) arasındaki fark

Başlangıçta buna sahip olduğunuzu varsayarsak:

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

Aradığın zaman:

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

Alacaksın:

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

süre:

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

yapar:

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

yani, evet bir fark var.

Hide () ve css ({'display': 'none'}) arasındaki fark

yukarıdakiyle aynıdır ancak bunları hide () olarak değiştirin ve ':' yok 'görüntüleyin ......

Başka bir fark Ne zaman .hide()çağrıldığında display özelliğinin değeri jQuery'nin veri önbelleğine kaydedilir, bu nedenle .show()çağrıldığında ilk görüntü değeri geri yüklenir!


6

: Evet hem performansında bir fark vardır jQuery('#id').show()daha yavaş gerçekleşiyor jQuery('#id').css("display","block")ekranı olarak jquery önbellekten başlangıç durumunu almak için yapılması gereken ise eski dava fazladan çalışmaya gibi olabilen bir ikili özellik değildir inline, block, none, table, vb benzer hide()yöntemde durum böyledir .

Bakınız: http://jsperf.com/show-vs-addclass


2
ve sayfada çok fazla göster ve gizle kullanıldığında performans kritik hale gelir.
aquasan

4

fark yok

Parametre olmadan, .hide () yöntemi bir öğeyi gizlemenin en basit yoludur:

$ ('. hedef']. hide (); Eşleşen öğeler animasyon olmadan hemen gizlenecektir. Bu, kabaca .css ('display', 'none') çağırmaya eşdeğerdir, tek fark, display özelliğinin değerinin jQuery'nin veri önbelleğine kaydedilmesi ve böylece görüntünün daha sonra başlangıç ​​değerine geri yüklenebilmesidir. Bir öğe satır içi görüntü değerine sahipse, bu durumda gizlenir ve gösterilir, bir kez daha satır içi olarak görüntülenecektir.

Gösteri hakkında aynı


Bunun dışında .show()uygun ayarlar displayel uygun mülkü seçmek zorunda kalacak olurken ile, mal.css()
Cerbrus

3

Evet bir fark var.

jQuery('#id').css("display","block") göstermek istediğiniz öğeyi her zaman blok olarak ayarlayacaktır.

jQuery('#id').show() will et başlangıçta hangi görüntü tipine göre, display: örneğin satır içi.

Jquery Belgesine Bakın


Bunun yalnızca jQuery'nin sonraki sürümlerinde geçerli olduğunu unutmayın. Örneğin 1.3 bunun için geçerli değildir.
Troy Alford

2

Kaynak koduna bir göz atabilirsiniz (burada v1.7.2).

Biz ayarlayabileceğini animasyon dışında, bu da bellekte eski ekran stili tutmak (her durumda değil block, aynı zamanda olabilir inline, table-cell, ...).


1

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

Parametre olmadan, .show () yöntemi bir öğeyi görüntülemenin en basit yoludur:

$ ('. hedef']. show ();

Eşleşen öğeler, animasyon olmadan hemen ortaya çıkacaktır. Bu, kabaca .css ('display', 'block') çağırmaya eşdeğerdir, ancak display özelliği başlangıçta olduğu gibi geri yüklenir. Bir öğe satır içi görüntü değerine sahipse, bu durumda gizlenir ve gösterilir, bir kez daha satır içi olarak görüntülenecektir.


Güzel açıklama .. Teşekkürler :)
Sashi Kant
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.