有没有人知道jQuery中的onHide()事件或类似事件?
我试过了:
$(this).bind('hide', function(){
console.log('asdasda')
})
但显然这不起作用。
修改
只是为了澄清,它是使用CSS display:none
隐藏的
我知道回调函数,但因为我没有隐藏它(CSS是)我不能使用它。
对于它的价值,我需要检查下拉列表何时可见。它由以下CSS显示:
ul li:hover ul {
display: block;
}
答案 0 :(得分:70)
没有本机或内置“隐藏”事件,但如果您使用jQuery隐藏它,则可以轻松添加隐藏事件:
var _oldhide = $.fn.hide;
$.fn.hide = function(speed, callback) {
$(this).trigger('hide');
return _oldhide.apply(this,arguments);
}
答案 1 :(得分:15)
您可以在隐藏功能中传递回叫功能。
function iAmCallBackForHide() {
alert('I am visible after hide');
}
$('#clickMeToHide').hide( iAmCallBackForHide );
答案 2 :(得分:10)
DOM中的任何HTML元素都没有“隐藏”事件。你是如何“隐藏”你的元素的?您使用CSS来更改显示或可见性吗?
如果您使用display:none隐藏元素,则无法检测CSS何时更改。在IE中,您可以检测属性何时更改但不会扩展到样式值。您需要在CSS显示更改时抛出事件或执行事件正在执行的操作。
答案 3 :(得分:5)
两年后找到这篇文章的人:
您确切知道菜单何时可见,对吧?! CSS规则告诉你。因此,您可以使用jQuery重新创建完全相同的规则,而不是依赖于onShow或onHide事件,并依赖于相同的“悬停事件”:
$('ul li').hover(function () {
// Whatever you want to do 'onShow'
}, function () {
// Whatever you want to do 'onHide'
});
此外,您的脚本现在独立于任何样式表,因此演示文稿详细信息不会指示网站行为(很好)。
答案 4 :(得分:2)
在jQuery 3中公开了一个" hide"并且"显示"事件
$(document).on("hide", function() {
console.log("browser page has been hidden");
});
答案 5 :(得分:2)
我最近制作了一个插件来检测元素何时被隐藏或以任何方式显示(通过核心javascript或检查器或jQuery hide / show)。
此扩展程序会持续监视元素以查看可见性更改。一旦改变它将发出一个事件,你可以处理你的东西
$("#test_hidden").hideShow(function(e, visibility){
if(visibility == "shown") {
console.log("Element is visible");
} else {
console.log("Element is hidden");
}
})
答案 6 :(得分:2)
Easy-pizy,请使用DOM mutation observers:
JS:
var observer = new MutationObserver(function(mutations) {
console.log('div hide event fired!');
});
var target = document.querySelector('.mydiv');
observer.observe(target, {
attributes: true
});
HTML:
<div class='mydiv'>
</div>
答案 7 :(得分:0)
这在某些用例中很有用: 使用waitUntilExists jquery插件(How to wait until an element exists?),您可以检测值何时发生变化:
$(li:hidden).waitUntilExists(function(){
// your code when it is hidden
}, /*onlyOnce = */ true);
我用它来检测何时隐藏了加载的gif。