Хоча раніше на це питання відповідали багато разів, я думав, що додам його ще більш повною і ґрунтовною відповіддю для майбутніх користувачів. Основна відповідь вирішує проблему, але я вважаю, що може бути краще знати / зрозуміти деякі з різних способів показати / приховати речі.
.
Зміна дисплея за допомогою css ()
Це те, як я це робив, поки не знайшов деякі з цих інших способів.
Javascript:
$("#element_to_hide").css("display", "none"); // To hide
$("#element_to_hide").css("display", ""); // To unhide
Плюси:
- Ховає і розкриває. Ось про це.
Мінуси:
- Якщо ви використовуєте атрибут "display" для чогось іншого, вам доведеться жорстко кодувати значення того, що було до приховування. Тож якби у вас був "інлайнер", вам доведеться це зробити
$("#element_to_hid").css("display", "inline"); інакше, він за замовчуванням повернеться до "блокування" або будь-якого іншого, що в нього буде примусово.
- Схильний до друкарських помилок.
Приклад: https://jsfiddle.net/4chd6e5r/1/
.
Зміна дисплея за допомогою addClass () / removeClass ()
Встановлюючи приклад для цього, я фактично зіткнувся з деякими вадами цього методу, які роблять його дуже ненадійним.
Css / Javascript:
.hidden {display:none}
$("#element_to_hide").addClass("hidden"); // To hide
$("#element_to_hide").removeClass("hidden"); // To unhide
Плюси:
- Він ховає .... іноді. На прикладі див. P1.
- Після того, як приховати, вона повернеться до використання попереднього значення відображення .... іноді. На прикладі див. P1.
- Якщо ви хочете схопити всі приховані предмети, вам це просто потрібно зробити
$(".hidden").
Мінуси:
- Не приховує, якщо значення відображення було встановлено безпосередньо в html. На прикладі див. P2.
- Не приховує, якщо дисплей встановлений у javascript за допомогою css (). На прикладі див. P3.
- Трохи більше коду, оскільки вам потрібно визначити атрибут css.
Приклад: https://jsfiddle.net/476oha8t/8/
.
Зміна дисплея за допомогою toggle ()
Javascript:
$("element_to_hide").toggle(); // To hide and to unhide
Плюси:
- Завжди працює.
- Дозволяє вам не турбуватися про те, у якому стані він був до переключення. Очевидним для цього є кнопка .... перемикання.
- Короткий і простий.
Мінуси:
- Якщо вам потрібно знати, в який стан він переходить, щоб зробити щось, що не пов'язане безпосередньо, вам доведеться додати більше коду (заява if), щоб дізнатися, у якому стані він знаходиться.
- Як і в попередньому підході, якщо ви хочете виконати набір інструкцій, що містить toggle () з метою приховування, але ви не знаєте, чи він уже прихований, вам слід додати чек (заява if) щоб дізнатися спочатку, і якщо це вже приховано, тоді пропустіть. Зверніться до p1 прикладу.
- Що стосується попередніх 2 мінусів, використання toggle () для того, що спеціально приховується або конкретно показує, може бентежити інших, хто читає ваш код, оскільки вони не знають, в який спосіб вони будуть перемикатися.
Приклад: https://jsfiddle.net/cxcawkyk/1/
.
Зміна дисплея за допомогою skriv () / show ()
Javascript:
$("#element_to_hide").hide(); // To hide
$("#element_to_hide").show(); // To show
Плюси:
- Завжди працює.
- Після того, як приховати його, він повернеться до використання попереднього значення відображення.
- Ви завжди будете знати, на який стан ви переходите, щоб:
- не потрібно додавати, якщо заяви перевіряють видимість перед зміною штатів, якщо стан має значення.
- не переплутає інших, хто читає ваш код, у який стан ви переходите, якщо стан має значення.
- Інтуїтивно зрозумілий.
Мінуси:
- Якщо ви хочете імітувати тумблер, вам доведеться спочатку перевірити стан, а потім перейти на інший стан. Замість цього використовуйте toggle (). Зверніться до p2 прикладу.
Приклад: https://jsfiddle.net/k0ukhmfL/
.
В цілому, я б сказав, що найкраще бути сховано () / show (), якщо вам спеціально не потрібно, щоб це було перемиканням. Я сподіваюся, що Ви знайшли цю інформацію корисною.
return falseвonclick?