Як перевірити, чи захований елемент у jQuery?


7738

Чи можна перемикати видимість елемента за допомогою функцій .hide(), .show()або .toggle()?

Як би ви перевірили, чи є елемент visibleчи hidden?


49
Варто згадати (навіть після цього часу), що $(element).is(":visible")працює для jQuery 1.4.4, але не для jQuery 1.3.2, під Internet & nbsp; Explorer & nbsp; 8 . Це можна перевірити, використовуючи корисний тест Цветомира Цонева . Просто не забудьте змінити версію jQuery, протестувати під кожною.
Ревінь

2
Це пов’язано, хоча інше питання: stackoverflow.com/questions/17425543/…
Марк Шультхейс

Відповіді:


9395

Оскільки питання стосується одного елемента, цей код може бути більш підходящим:

// Checks CSS content for display:[none|block], ignores visibility:[true|false]
$(element).is(":visible");

// The same works with hidden
$(element).is(":hidden");

Це те саме , що пропозиція twernt , але застосовується до одного елемента; і це відповідає алгоритму, рекомендованому у FAQ про jQuery .

Ми використовуємо jQuery's is () для перевірки обраного елемента з іншим елементом, селектором або будь-яким об’єктом jQuery. Цей метод рухається вздовж елементів DOM, щоб знайти збіг, який задовольняє переданому параметру. Він повернеться істинним, якщо є збіг, інакше повернеться хибним.


164
Це рішення могло б сприяти конвертації visible=falseта display:none; враховуючи, що рішення Моте явно ілюструє кодери, що мають намір перевірити display:none; (через згадку про приховування та покажіть, який контроль display:noneнемає visible=true)
kralco626

93
Це правильно, але :visibleтакож перевірять, чи видні батьківські елементи, як зазначив чіборг.
Цветомир Цонев

45
У вас є пункт - я дам зрозуміти, що код перевіряє лише displayвластивість. З огляду на , що початковий питання для show()і hide(), і вони встановили display, що моя відповідь є правильним. До речі, це працює з IE7, ось тестовий фрагмент - jsfiddle.net/MWZss ;
Цветомир Цонев

53
Я фактично виявив, що зворотні логічні слова краще:! $ ('Selector'). Is (': hidden'); з якоїсь причини. Варто спробувати.
Kzqai

21
Ось простий тестовий тест є () щодо regexp: jsperf.com/jquery-is-vs-regexp-for-css-visibility . Висновок: якщо вам не вистачає продуктивності, використовуйте regexp over is () (оскільки is () шукає спочатку всі приховані вузли, перш ніж переглянути фактичний елемент).
Макс Леске

1457

Ви можете використовувати hiddenселектор:

// Matches all elements that are hidden
$('element:hidden')

І visibleселектор:

// Matches all elements that are visible
$('element:visible')

67
просто будьте обережні, в цій презентації є кілька корисних порад щодо ефективності: addyosmani.com/jqprovenperformance
codecraig

27
На сторінках 21-28 показано, наскільки повільний: прихований або: видимий порівняно з іншими селекторами. Дякуємо, що вказали на це.
Етьєн Дюпуа

109
Коли ви маєте справу з парою елементів, і це відбувається дуже мало - тобто АБУРДАЛЬНА ВІДПОВІДАЛЬНІСТЬ СЛУЧАСІВ - питання часу викликає смішно незначну проблему. О, ні! Минуло 42 мс замість 19 мс !!!
vbullinger

16
Я перемикаю елемент по-чоловічому за допомогою цього селектора. $ ('елемент: приховано') для мене завжди вірно!
ZoomIn

15
@cwingrav Ви можете перечитати документацію: приховане стосується всіх елементів. Елементи форми з type="hidden"- це лише один випадок, який може спрацьовувати: приховано. Елементи без висоти та ширини, елементи із display: noneта прихованими предками також класифікуються як: приховані.
Джошуа Уолш

948
if ( $(element).css('display') == 'none' || $(element).css("visibility") == "hidden"){
    // 'element' is hidden
}

Вищеописаний метод не враховує видимість батьків. Для розгляду також батьків слід скористатися .is(":hidden")або.is(":visible") .

Наприклад,

<div id="div1" style="display:none">
  <div id="div2" style="display:block">Div2</div>
</div>

Вищеописаний метод вважатиме div2видимим, а :visibleні. Але вищесказане може бути корисним у багатьох випадках, особливо, коли вам потрібно знайти, чи є якісь помилки, які видно у прихованому батьківському середовищі, оскільки в таких умовах :visibleне вийде.


131
Це перевіряє лише властивість відображення одного елемента. Атрибут: видимий перевіряє також видимість батьківських елементів.
чиборг

16
Це єдине рішення, яке працювало для мене під час тестування з IE 8.
evanmcd

20
@chiborg Так, але іноді це те, чого ти хочеш, і мені довелося навчитися важко, наскільки "розумним" був jQuery ...
Кейсі

9
Це дає відповідь на питання, оскільки питання стосується одного елемента та за допомогою hide(), show()та toggle()функцій, однак, як більшість з них вже говорили, ми повинні використовувати класи :visibleта :hiddenпсевдокласи.
Джиммі Кнут

2
Цю відповідь можна використовувати, коли елемент існує, але наразі його немає на сторінці, наприклад після detach ().
atheaos

526

Жодна з цих відповідей не стосується того, що я розумію як питання, а саме це я шукав: "Як мені обробляти предмети, які є visibility: hidden?" . Ні з цим, :visibleні :hiddenз цим не впораються, оскільки вони обидва шукають показ відповідно до документації. Наскільки я міг визначити, немає селектора для обробки видимості CSS. Ось як я вирішив це (стандартні селектори jQuery, можливо, є більш ущільнений синтаксис):

$(".item").each(function() {
    if ($(this).css("visibility") == "hidden") {
        // handle non visible state
    } else {
        // handle visible state
    }
});

18
З цією відповіддю добре поправитись visibilityбуквально, але питання було How you would test if an element has been hidden or shown using jQuery?. Використання jQuery означає: displayвластивість.
MarioDS

10
Елементи з visibility: hiddenабо opacity: 0вважаються видимими, оскільки вони все ще займають місце в макеті. Дивіться відповідь Педро Рейнхо та документацію jQuery про :visibleселектор.
трепет

9
вам потрібно об'їхати DOM, щоб перевірити батьків вузла, інакше це марно.
vsync

389

З Як визначити стан переключеного елемента?


Ви можете визначити, згортається чи ні елемент, використовуючи селектори :visibleта :hidden.

var isVisible = $('#myDiv').is(':visible');
var isHidden = $('#myDiv').is(':hidden');

Якщо ви просто дієте на елемент, заснований на його видимості, ви можете просто включити :visibleабо :hiddenу вираз селектора. Наприклад:

 $('#myDiv:visible').animate({left: '+=200px'}, 'slow');

4
цікаво, чому жодна відповідь не згадує випадок, коли елемент top:-1000px
відсувається

294

Часто перевіряючи, чи щось видно чи ні, ви збираєтесь негайно йти вперед і робити з ним щось інше. Інтер'єр jQuery робить це легко.

Отже, якщо у вас є селектор і ви хочете виконати якусь дію над ним, лише якщо він видимий або прихований, ви можете використовувати filter(":visible")абоfilter(":hidden") слідувати, пов'язавши його з дією, яку ви хочете зробити.

Тож замість ifзаяви, як це:

if ($('#btnUpdate').is(":visible"))
{
     $('#btnUpdate').animate({ width: "toggle" });   // Hide button
}

Або ефективніше, але ще хитріше:

var button = $('#btnUpdate');
if (button.is(":visible"))
{
     button.animate({ width: "toggle" });   // Hide button
}

Ви можете зробити це в один рядок:

$('#btnUpdate').filter(":visible").animate({ width: "toggle" });

25
Немає підстав витягати вузол DOM у фрагменті, який використовується у прикладі, а потім знову шукати його назад. Краще просто зробити: var $ button = $ ('# btnUpdate'); І тоді в виразах If просто використовуйте кнопку $ замість $ (кнопка). Має перевагу кешування об'єкта jQuery.
LocalPCGuy

1
ось простий приклад jquerypot.com/…
Кетан Савалія

241

:visibleСелектор в відповідно до документацією JQuery :

  • Вони мають displayзначення CSS none.
  • Вони є елементами форми з type="hidden".
  • Їх ширина і висота явно встановлені на 0.
  • Елемент предка прихований, тому елемент не відображається на сторінці.

Елементи з visibility: hiddenабо opacity: 0вважаються видимими, оскільки вони все ще займають місце в макеті.

Це корисно в деяких випадках і марно в інших, тому що якщо ви хочете перевірити, чи елемент видно ( display != none), ігноруючи видимість батьків, ви виявите, що робите.css("display") == 'none' робиться не тільки швидше, але і поверне перевірку видимості правильно.

Якщо ви хочете перевірити видимість замість дисплея, слід використовувати: .css("visibility") == "hidden" .

Також врахуйте додаткові примітки jQuery :

Оскільки :visibleрозширення jQuery і не є частиною специфікації CSS, запити, що використовують, :visibleне можуть скористатися підвищенням продуктивності, наданим нативним querySelectorAll()методом DOM . Щоб досягти найкращої продуктивності при використанні :visibleдля вибору елементів, спочатку виберіть елементи за допомогою чистого селектора CSS, а потім використовуйте .filter(":visible").

Крім того, якщо ви стурбовані ефективністю, ви повинні перевірити. Тепер ви бачите мене ... показати / приховати продуктивність (2010-05-04). І використовувати інші методи, щоб показати та приховати елементи.


213

Це працює для мене, і я використовую show()та hide()роблю свій дів прихованим / видимим:

if( $(this).css('display') == 'none' ){
    /* your code goes here */
} else {
    /* alternate logic   */
}

212

Як працює видимість елементів та jQuery ;

Елемент можна приховати за допомогою display:none, visibility:hiddenабо opacity:0. Різниця між цими методами:

  • display:none приховує елемент, і він не займає ніякого місця;
  • visibility:hidden приховує елемент, але він все одно займає місце в макеті;
  • opacity:0приховує елемент як "видимість: прихований", і він все ще займає місце в макеті; Єдина відмінність полягає в тому, що непрозорість дозволяє зробити елемент частково прозорим;

    if ($('.target').is(':hidden')) {
      $('.target').show();
    } else {
      $('.target').hide();
    }
    if ($('.target').is(':visible')) {
      $('.target').hide();
    } else {
      $('.target').show();
    }
    
    if ($('.target-visibility').css('visibility') == 'hidden') {
      $('.target-visibility').css({
        visibility: "visible",
        display: ""
      });
    } else {
      $('.target-visibility').css({
        visibility: "hidden",
        display: ""
      });
    }
    
    if ($('.target-visibility').css('opacity') == "0") {
      $('.target-visibility').css({
        opacity: "1",
        display: ""
      });
    } else {
      $('.target-visibility').css({
        opacity: "0",
        display: ""
      });
    }

    Корисні методи перемикання jQuery:

    $('.click').click(function() {
      $('.target').toggle();
    });
    
    $('.click').click(function() {
      $('.target').slideToggle();
    });
    
    $('.click').click(function() {
      $('.target').fadeToggle();
    });

20
Ще одна різниця між visibility:hiddenі opacity:0полягає в тому, що елемент все одно буде реагувати на події (наприклад, кліки) за допомогою opacity:0. Я дізнався цей трюк - виготовлення спеціальної кнопки для завантаження файлів.
уррака

1
також якщо приховати вхід із непрозорістю: 0, він все одно вибирається клавішею вкладки
YangombiUmpakati

160

Ви також можете це зробити за допомогою простого JavaScript:

function isRendered(domObj) {
    if ((domObj.nodeType != 1) || (domObj == document.body)) {
        return true;
    }
    if (domObj.currentStyle && domObj.currentStyle["display"] != "none" && domObj.currentStyle["visibility"] != "hidden") {
        return isRendered(domObj.parentNode);
    } else if (window.getComputedStyle) {
        var cs = document.defaultView.getComputedStyle(domObj, null);
        if (cs.getPropertyValue("display") != "none" && cs.getPropertyValue("visibility") != "hidden") {
            return isRendered(domObj.parentNode);
        }
    }
    return false;
}

Примітки:

  1. Працює скрізь

  2. Працює для вкладених елементів

  3. Працює для CSS та inline стилів

  4. Не вимагає рамки


6
Працює дещо інакше, ніж jQuery's; він вважає visibility: hidden, що видно .
алекс

4
Досить просто змінити код вище, щоб імітувати (напевно дурну) поведінку jQuery. . . . . функція isRended (o) {if ((o.nodeType! = 1) || (o == document.body)) {return true;} if (o.currentStyle && o.currentStyle ["display"]! = "none") {return isRender (o.parentNode);} else if (window.getComputedStyle) {if (document.defaultView.getComputedStyle (o, null) .getPropertyValue ("display")! = "none") {return isRender (o.parentNode) );}} повернути помилково;}
Метт Брок

3
Звичайно, я просто додав, що на користь користувачів, які користувалися цим, не скануючи його код. :)
alex

160

Я б використовував клас CSS .hide { display: none!important; } .

За приховування / показ я дзвоню .addClass("hide")/.removeClass("hide"). Для перевірки видимості я використовую.hasClass("hide") .

Це простий і зрозумілий спосіб перевірити / приховати / показати елементи, якщо ви не плануєте використовувати .toggle()або .animate()методи.


11
.hasClass('hide')не перевіряє, чи прихований батьківський пращур (який би його також приховав). Можливо, ви можете змусити це правильно працювати, перевіривши, якщо .closest('.hide').length > 0, але навіщо винаходити колесо?
nbrooks

1
Варіант, який ви пропонуєте повернути, якщо елемент, видимий на html, мій варіант повертається, якщо елемент був безпосередньо прихований вашим кодом JavaScript / механізмом перегляду. Якщо ви знаєте, що батьківські елементи ніколи не слід приховувати - використовуйте .hasClass (), щоб бути більш суворими і запобігати майбутнім помилкам. Якщо ви хочете перевірити не лише видимість, але й встановлений стан елемента - використовуйте також .hasClass (). В інших випадках .closest () краще.
Євген Левін

1
Чому ви просто не використовуєте .is (": видимий")?
dont_trust_me

137

Демонстраційна посилання

$('#clickme').click(function() {
  $('#book').toggle('slow', function() {
    // Animation complete.
    alert($('#book').is(":visible")); //<--- TRUE if Visible False if Hidden
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="clickme">
  Click here
</div>
<img id="book" src="https://upload.wikimedia.org/wikipedia/commons/8/87/Google_Chrome_icon_%282011%29.png" alt="" width="300"/>

Джерело:

Blogger Plug n Play - Інструменти та віджети jQuery: як дізнатися, чи елемент прихований чи видимий за допомогою jQuery


1
@Adrew, але це посилання відображає робочий приклад цієї функції. Я думаю, що практична відповідь може мати вагу на повній сторінці тексту :)
Код шпигуна

133

Можна просто використовувати атрибут hiddenабо visibleатрибут, наприклад:

$('element:hidden')
$('element:visible')

Або ви можете спростити те ж саме з IS наступним чином .

$(element).is(":visible")

130

ebdivслід встановити style="display:none;". Він працює як для шоу, так і для приховування:

$(document).ready(function(){
    $("#eb").click(function(){
        $("#ebdiv").toggle();
    });    
});

118

Ще одна відповідь, яку ви повинні врахувати, - це якщо ви ховаєте елемент, ви повинні використовувати jQuery , але замість того, щоб насправді його приховувати, ви видаляєте весь елемент, але ви копіюєте його вміст HTML і сам тег у змінну jQuery, а потім все, що вам потрібно зробити, це перевірити, чи є такий тег на екрані, використовуючи звичайний if (!$('#thetagname').length).


99

Під час тестування елемента на :hiddenселекторі в jQuery слід враховувати, що абсолютний позиціонований елемент може бути визнаний прихованим, хоча їх дочірні елементи видно .

В першу чергу це здається дещо контрінтуїтивним, хоча детальніше ознайомившись з документацією jQuery дає відповідну інформацію:

Елементи можна вважати прихованими з кількох причин: [...] Їх ширина і висота явно встановлені на 0. [...]

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

Подивіться на наступний приклад:

console.log($('.foo').is(':hidden')); // true
console.log($('.bar').is(':hidden')); // false
.foo {
  position: absolute;
  left: 10px;
  top: 10px;
  background: #ff0000;
}

.bar {
  position: absolute;
  left: 10px;
  top: 10px;
  width: 20px;
  height: 20px;
  background: #0000ff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="foo">
  <div class="bar"></div>
</div>


Оновлення для jQuery 3.x:

З jQuery 3 описана поведінка зміниться! Елементи будуть вважатися видимими, якщо вони мають будь-які вікна компонування, включаючи нульову ширину та / або висоту.

JSFiddle з jQuery 3.0.0-alpha1:

http://jsfiddle.net/pM2q3/7/

Цей же код JavaScript матиме такий вихід:

console.log($('.foo').is(':hidden')); // false
console.log($('.bar').is(':hidden')); // false

89

Це може працювати:

expect($("#message_div").css("display")).toBe("none");

7
Яка мова / діалект / бібліотека це? Я не знайомий з цим синтаксисом в JS ...
nbrooks

74

Приклад:

$(document).ready(function() {
  if ($("#checkme:hidden").length) {
    console.log('Hidden');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="checkme" class="product" style="display:none">
  <span class="itemlist"><!-- Shows Results for Fish --></span> Category:Fish
  <br>Product: Salmon Atlantic
  <br>Specie: Salmo salar
  <br>Form: Steaks
</div>


66

Щоб перевірити, чи його не видно, я використовую !:

if ( !$('#book').is(':visible')) {
    alert('#book is not visible')
}

Або наступним є також сам, зберігаючи селектор jQuery у змінній, щоб мати кращу продуктивність, коли вам це потрібно кілька разів:

var $book = $('#book')

if(!$book.is(':visible')) {
    alert('#book is not visible')
}

1
Як ви визначили, що збереження селектора в змінній дійсно швидше?
Ілля Ростовцев

3
Привіт @Ilia Rostovtsev jsperf.com/caching-jquery-selectors Там ви можете запустити тест. У будь-якому випадку приємно мати кеш, щоб отримати доступ до нього швидше
Matthias Wegtun

2
Це підходить, якщо ви хочете використовувати одну змінну через процес, а не викликати і викликати той самий об'єкт.
Кеннет Палаґана

60

Використовуйте перемикання класів, а не редагування стилів. . .

Використання класів, призначених для "приховування" елементів, є простим, а також одним з найбільш ефективних методів. Переміщення класу "приховано" з аDisplay стилем "none" виконуватиметься швидше, ніж безпосередньо редагувати цей стиль. Дещо з цього я пояснив у запитанні про переповнення стека Поворот двох елементів, видимих ​​/ прихованих в одному ділі .


Кращі практики та оптимізація JavaScript

Ось справді освічуюче відео з Google Tech Talk від інженера Google Нікаса Закаса:


60

Активовано приклад використання видимої перевірки для adblocker:

$(document).ready(function(){
  if(!$("#ablockercheck").is(":visible"))
    $("#ablockermsg").text("Please disable adblocker.").show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="ad-placement" id="ablockercheck"></div>
<div id="ablockermsg" style="display: none"></div>

"ablockercheck" - це ідентифікатор, який блокує adblocker. Тож перевіривши це, чи воно видно, ви зможете виявити, чи ввімкнено adblocker.


58

Зрештою, жоден із прикладів мені не підходить, тому я написав свій.

Тести (без підтримки Internet Explorer filter:alpha):

a) Перевірте, чи документ не приховано

b) Перевірте, чи елемент має нульову ширину / висоту / непрозорість або display:none/ visibility:hiddenвбудовані стилі

в) Перевірте, чи центр (також тому, що він швидший, ніж тестування кожного пікселя / кута) елемента не прихований іншим елементом (і всіма предками, наприклад: overflow:hidden / прокрутка / один елемент над іншим) або екранами краю

г) Перевірте, чи елемент має нульову ширину / висоту / непрозорість чи display:none/ видимість: прихований у обчислених стилях (серед усіх предків)

Випробуваний на

Android 4.4 (власний браузер / Chrome / Firefox), Firefox (Windows / Mac), Chrome (Windows / Mac), Opera (Windows Presto / Mac WebKit), Internet Explorer (режими документа Internet Explorer 5-11 + Internet Explorer 8 на віртуальна машина) та Safari (Windows / Mac / iOS).

var is_visible = (function () {
    var x = window.pageXOffset ? window.pageXOffset + window.innerWidth - 1 : 0,
        y = window.pageYOffset ? window.pageYOffset + window.innerHeight - 1 : 0,
        relative = !!((!x && !y) || !document.elementFromPoint(x, y));
        function inside(child, parent) {
            while(child){
                if (child === parent) return true;
                child = child.parentNode;
            }
        return false;
    };
    return function (elem) {
        if (
            document.hidden ||
            elem.offsetWidth==0 ||
            elem.offsetHeight==0 ||
            elem.style.visibility=='hidden' ||
            elem.style.display=='none' ||
            elem.style.opacity===0
        ) return false;
        var rect = elem.getBoundingClientRect();
        if (relative) {
            if (!inside(document.elementFromPoint(rect.left + elem.offsetWidth/2, rect.top + elem.offsetHeight/2),elem)) return false;
        } else if (
            !inside(document.elementFromPoint(rect.left + elem.offsetWidth/2 + window.pageXOffset, rect.top + elem.offsetHeight/2 + window.pageYOffset), elem) ||
            (
                rect.top + elem.offsetHeight/2 < 0 ||
                rect.left + elem.offsetWidth/2 < 0 ||
                rect.bottom - elem.offsetHeight/2 > (window.innerHeight || document.documentElement.clientHeight) ||
                rect.right - elem.offsetWidth/2 > (window.innerWidth || document.documentElement.clientWidth)
            )
        ) return false;
        if (window.getComputedStyle || elem.currentStyle) {
            var el = elem,
                comp = null;
            while (el) {
                if (el === document) {break;} else if(!el.parentNode) return false;
                comp = window.getComputedStyle ? window.getComputedStyle(el, null) : el.currentStyle;
                if (comp && (comp.visibility=='hidden' || comp.display == 'none' || (typeof comp.opacity !=='undefined' && comp.opacity != 1))) return false;
                el = el.parentNode;
            }
        }
        return true;
    }
})();

Як користуватись:

is_visible(elem) // boolean

50

Вам потрібно перевірити обидва ... Дисплей, а також видимість:

if ($(this).css("display") == "none" || $(this).css("visibility") == "hidden") {
    // The element is not visible
} else {
    // The element is visible
}

Якщо ми перевіримо $(this).is(":visible"), jQuery перевіряє обидві речі автоматично.


41

Можливо, ви можете зробити щось подібне

$(document).ready(function() {
   var visible = $('#tElement').is(':visible');

   if(visible) {
      alert("visible");
                    // Code
   }
   else
   {
      alert("hidden");
   }
});
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>

<input type="text" id="tElement" style="display:block;">Firstname</input>


37

Просто перевірте видимість, перевіривши бульне значення, наприклад:

if (this.hidden === false) {
    // Your code
}

Я використовував цей код для кожної функції. В іншому випадку ви можете використовувати is(':visible')для перевірки видимості елемента.


34

Тому що Elements with visibility: hidden or opacity: 0 are considered visible, since they still consume space in the layout(як описано для jQuery: видимий селектор ) - ми можемо перевірити, чи дійсно елемент видно таким чином:

function isElementReallyHidden (el) {
    return $(el).is(":hidden") || $(el).css("visibility") == "hidden" || $(el).css('opacity') == 0;
}

var booElementReallyShowed = !isElementReallyHidden(someEl);
$(someEl).parents().each(function () {
    if (isElementReallyHidden(this)) {
        booElementReallyShowed = false;
    }
});


30

Функція може бути створена для того, щоб перевірити наявність атрибутів видимості / відображення, щоб визначити, відображається чи елемент в інтерфейсі чи ні.

function checkUIElementVisible(element) {
    return ((element.css('display') !== 'none') && (element.css('visibility') !== 'hidden'));
}

Робоча скрипка


29

Також ось термінальний умовний вираз, щоб перевірити стан елемента і потім перемкнути його:

$('someElement').on('click', function(){ $('elementToToggle').is(':visible') ? $('elementToToggle').hide('slow') : $('elementToToggle').show('slow'); });

4
Або, так, просто позбудьтесь всього умовного і скажіть $('elementToToggle').toggle('slow');...:)
nbrooks

29
if($('#postcode_div').is(':visible')) {
    if($('#postcode_text').val()=='') {
        $('#spanPost').text('\u00a0');
    } else {
        $('#spanPost').text($('#postcode_text').val());
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.