Подтвердить что ты не робот

OnHide() тип события в jQuery

Кто-нибудь знает о событии onHide() или что-то подобное в jQuery?

Я пробовал:

$(this).bind('hide', function(){
    console.log('asdasda')
})

Но, видимо, это не сработает.

Edit: Просто уточнить, он скрывается с помощью CSS display:none.
Я знаю функцию обратного вызова, но поскольку я не скрываю ее (CSS), я не могу ее использовать. Для чего это стоит, мне нужно проверить, когда выпадающее меню видно. Это показано в следующем CSS:

ul li:hover ul {
    display: block;
} 
4b9b3361

Ответ 1

Нет никакого "скрытого" события для любого элемента HTML в DOM. Как вы "скрываете" свои элементы? Вы используете CSS для изменения отображения или видимости?

Если вы используете display: none, чтобы скрыть элемент, вы не можете обнаружить, когда CSS изменяется. В IE вы можете определить, когда изменяется свойство, но не распространяется на значения стиля. Вам нужно будет выбросить событие или сделать то, что делает событие во время изменения отображения CSS.

Ответ 2

Не существует встроенного или встроенного в "скрытое" событие, но если вы используете jQuery, чтобы скрыть его, вы можете легко добавить событие hide:

var _oldhide = $.fn.hide;
$.fn.hide = function(speed, callback) {
    $(this).trigger('hide');
    return _oldhide.apply(this,arguments);
}

Ответ 3

Вы можете передать функцию обратного вызова в скрытую функцию.

function iAmCallBackForHide() { 
             alert('I am visible after hide'); 
}
$('#clickMeToHide').hide( iAmCallBackForHide );

Ответ 4

Для тех, кто нашел это сообщение два года спустя:

Вы точно знаете, когда меню видно, правильно?! Правило CSS сообщает вам. Поэтому вместо того, чтобы полагаться на onShow или onHide-события, вы можете воссоздать одно и то же правило с помощью jQuery и полагаться на одно и то же "событие зависания":

$('ul li').hover(function () {
    // Whatever you want to do 'onShow'
}, function () {
    // Whatever you want to do 'onHide'
});

Кроме того, ваш script теперь действует независимо от любой таблицы стилей, поэтому данные презентации не диктуют поведение веб-сайта (nice).

Ответ 5

В jQuery 3 отображаются события "скрыть" и "показать".

$(document).on("hide", function() { 
    console.log("browser page has been hidden");
});

Ответ 6

Недавно я создал плагин для обнаружения, когда элемент скрывается или отображается каким-либо образом (с помощью основного javascript или инспектора или jQuery hide/show).

pratik916/jQuery-HideShow

Это расширение продолжает наблюдать за элементом для изменения видимости. после его изменения будет выдано событие, в котором вы сможете обрабатывать свои вещи.

$("#test_hidden").hideShow(function(e, visibility){
    if(visibility == "shown") {
        console.log("Element is visible");
    } else {
        console.log("Element is hidden");
    }
})

Ответ 7

Это может быть полезно в некоторых случаях: Использование waitUntilExists jquery plugin (Как подождать, пока элемент не существует?), вы можете определить, когда изменяется значение:

$(li:hidden).waitUntilExists(function(){                        
   // your code when it is hidden 
}, /*onlyOnce = */ true);

Я использовал его для обнаружения, когда был скрыт гид загрузки.