JQuery Toggle - любой способ узнать, какой (скрыть или показать) применяется? - PullRequest
10 голосов
/ 29 марта 2009

Я работаю в Adobe AIR, и у меня есть список div, которые показывают расширенную информацию для каждого элемента списка в скрытом div по щелчку - вот так:

$(this).click(function(){
 $(this).next('div.info').toggle();
});

Это увеличивает высоту всего приложения, поэтому в конечном итоге, если бы пользователь развернул все элементы div, на боковой панели появилась бы полоса прокрутки. Чтобы обойти это, я хочу отрегулировать высоту окна (в зависимости от роста или уменьшения). У меня весь код работает, за исключением того, что я не могу понять, как попасть внутрь функции .toggle, чтобы узнать, какой эффект (скрыть или показать) будет применен. Установка оператора if () в качестве ключа для конечного состояния информационного div не работает, потому что он оценивает div немедленно по щелчку.

Есть ли способ узнать, какой .toggle применяется в jQuery, чтобы я мог использовать это изменение состояния для применения других моих изменений?

Ответы [ 3 ]

12 голосов
/ 29 марта 2009

После завершения переключения вы можете узнать, какой div был переключен:

var visible = $(this).next('div.info').toggle().is(":visible");
if(visible){
  alert("Hey! I've just showed up here!");
}

Таким образом, вы узнаете, показала ли последняя операция переключения div или нет.

7 голосов
/ 29 марта 2009

Вы можете проверить это с помощью:

if ($(selector).is(':visible')) {
   // do something
}
0 голосов
/ 29 августа 2018
$('.class_name').click(function (event)
{
    triggerHideShow('#id_name'); // autodetect    
});

function triggerHideShow(id)
{
    if ($(id).is(':visible'))
    {
        $(id).hide();
    }
    else
    {
        $(id).show();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...