Різниця між jQuery .hide () та .css (“display”, “none”)


81

Чи є якась різниця між

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

і

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

Відповіді:


95

jQuery ('# id'). css ("дисплей", "блок")

displayВластивість може мати безліч можливих значень, серед яких block, inline, inline-blockі багато іншого .

.show()Метод не встановлює його обов'язково block, а скидає його на те , що ви визначили його (якщо взагалі).

У вихідному коді jQuery ви можете побачити, як вони встановлюють displayвластивість "" (порожній рядок), щоб перевірити, що це було до будь-якої маніпуляції з jQuery: маленьке посилання .

З іншого боку, приховування здійснюється через display: none;, тому ви можете розглянути .hide()і .css("display", "none")еквівалентно певному моменту.

Рекомендується використовувати .show()і в .hide()будь-якому випадку уникати будь-яких помилок (плюс, вони коротші).


3
Завдяки комплексній перевірці шоу / приховування, методи значно повільніші. Якщо ви повторно викликаєте метод, можливо, ви захочете використовувати метод css.
Gqqnbig

33

Різниця між show () та css ({'display': 'block'})

Якщо припустити, що це у вас на початку:

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

коли ви телефонуєте:

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

ти отримаєш:

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

в той час як:

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

робить:

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

так, так, є різниця.

Різниця між hide () та css ({'display': 'none'})

те саме, що і вище, але перетворіть їх на hide () та відображення ':' none '......

Ще одна відмінність Коли .hide()називається значення властивості display, зберігається в кеші даних jQuery, тому при .show()виклику початкове значення відображення відновлюється!


6

Так , є різниця в продуктивності як: jQuery('#id').show()повільніше , ніж , jQuery('#id').css("display","block")як і в першому випадку додаткової роботи повинно бути зроблено для отримання початкового стану з кешу Jquery як дисплей НЕ двійковий атрибут може бути inline, block, none, tableі т.д. схожі це випадок із hide()методом.

Див .: http://jsperf.com/show-vs-addclass


2
і продуктивність стає критичною, коли на сторінці використовується занадто багато показів і приховування.
aquasan 01.03.13

4

без різниці

Без параметрів метод .hide () є найпростішим способом приховати елемент:

$ ('. target'). hide (); Відповідні елементи будуть негайно приховані, без анімації. Це приблизно еквівалентно виклику .css ('display', 'none'), за винятком того, що значення властивості display зберігається в кеші даних jQuery, щоб пізніше відображення могло бути відновлене до початкового значення. Якщо елемент має відображуване значення вбудованого, а потім прихований і показаний, він знову буде відображений вбудованим.

Те саме про шоу


За винятком того .show(), що встановить належну displayвластивість, тоді як вам доведеться вибирати відповідну властивість вручну, з.css()
Cerbrus

3

Так, є різниця.

jQuery('#id').css("display","block") завжди буде встановлювати елемент, який ви хочете показати як блок.

jQuery('#id').show() will et - це те, яким типом відображення він був спочатку, наприклад display: inline.

Див. Jquery Doc


Зверніть увагу, що це справедливо лише в пізніших версіях jQuery. 1.3, наприклад, не відповідає цьому.
Трой Алфорд,

2

Ви можете поглянути на вихідний код (тут це v1.7.2).

Для анімації , що ми можемо встановити Крім цього , це також зберегти в пам'яті старий стиль відображення (який не у всіх випадках block, вона також може бути inline, table-cell...).


1

див. http://api.jquery.com/show/

Без параметрів метод .show () є найпростішим способом відображення елемента:

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

Відповідні елементи будуть розкриті негайно, без анімації. Це приблизно еквівалентно виклику .css ('display', 'block'), за винятком того, що властивість display відновлюється до того, що було спочатку. Якщо елемент має відображуване значення вбудованого, а потім прихований і показаний, він знову буде відображений вбудованим.


Приємне пояснення .. Дякую :)
Саші Кант
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.