Сховати / показати елемент із булевим


109

У моєму коді, як правило, їх багато

if(shouldElementBeVisible)
    $element.show()
else
    $element.hide()

Чи є який-небудь елегантний спосіб, упакований з javascript, jquery або підкресленням? В ідеалі я хочу чогось такого, що виглядає так

$element.showOrHideDependingOn(shouldElementBeVisible)


@SpencerWieczorek це питання трапляється для посилання toggle, але його інше питання
Aakil Fernandes

Відповіді:


166

Мабуть, ви можете просто передати булеву toggleфункцію

$element.toggle(shouldElementBeVisible)

34
Я рекомендую використовувати $element.toggle(!!shouldElementBeVisible)для запобігання випадкового потрапляння однієї з інших "перевантажень" , якщо, звичайно, ви не впевнені, що змінна є булевим значенням.
Jeroen

7
Кращий варіант може бути $element.toggle(shouldElementBeVisible == true).
jox

"0"і до "false"них ставляться дуже різні, ніж у falseбудь-якому випадку, тому я не думаю, що це відмінність насправді має значення - навіть 0було б невірно, якщо ви хочете, щоб воно було прихованим, оскільки всі ці встановлені часи анімації, але все ще переглядають видимість.
Тасгалл

19

Так, є!

$element.toggle();

Без будь-яких параметрів toggleпросто перемикає видимість елементів (я не маю на увазі visibilityвластивість) і залежить від поточного стану елемента.

$element.toggle(display);

Якщо ви телефонуєте toggleз булевим параметром, елемент відображається, якщо він є, trueі hiddenякщо він єfalse

джерело


2
Я збирався позначити це неправильно, тоді зрозумів, що остання посилання API дозволяє встановити булевий замість об’єкта параметрів.
Акіл Фернандес

кілька рядків під цим: "Без параметрів метод .toggle () просто перемикає видимість елементів"
Зак Спенсер

2
це насправді протилежне тому, що я хотів. Я хотів, щоб поточний стан елемента був неактуальним. Стан повинен базуватися на булевій змінній.
Акіл Фернандес

@AakilFernandes Отже, змінна isShownне має відношення до того, що $elementвона є видимою чи ні? Але окрема змінна, не пов'язана з елементом?
Спенсер Вічерек

Так, вибачте, що я, мабуть, повинен був перейменований isShownна щось подібне, shouldElementBeVisibleщоб зробити це більш очевидним
Aakil Fernandes


0

Функція .toggle()змінює displayелемент.

Якщо ви хочете змінити visibility, я б запропонував скористатися ?:оператором. Для цього на своєму CSS встановіть видимість у вихідний стан, а в JS просто поставте:

    var checkboxChecked = $("#yourCheckbox").(":checked");

    $("#yourElement").css("visibility", checkboxChecked ? "visible" : "hidden");
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.