OnHide() тип события в jQuery
Кто-нибудь знает о событии onHide() или что-то подобное в jQuery?
Я пробовал:
$(this).bind('hide', function(){
console.log('asdasda')
})
Но, видимо, это не сработает.
Edit:
Просто уточнить, он скрывается с помощью CSS display:none
.
Я знаю функцию обратного вызова, но поскольку я не скрываю ее (CSS), я не могу ее использовать.
Для чего это стоит, мне нужно проверить, когда выпадающее меню видно. Это показано в следующем CSS:
ul li:hover ul {
display: block;
}
Ответы
Ответ 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);
Я использовал его для обнаружения, когда был скрыт гид загрузки.