jQuery中的onHide()类型事件

Sam*_*Sam 36 jquery events javascript-events

有没有人知道一个onHide()事件或jQuery中类似的东西?

我试过了:

$(this).bind('hide', function(){
    console.log('asdasda')
})
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用.

编辑: 只是为了澄清,它是使用CSS隐藏的display:none.
我知道回调函数,但因为我没有隐藏它(CSS是)我不能使用它.对于它的价值,我需要检查下拉列表何时可见.它由以下CSS显示:

ul li:hover ul {
    display: block;
} 
Run Code Online (Sandbox Code Playgroud)

Pet*_*dIt 71

没有本机或内置"隐藏"事件,但如果您使用jQuery隐藏它,您可以轻松添加隐藏事件:

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


Fai*_*san 15

您可以在隐藏功能中传递回调函数.

function iAmCallBackForHide() { 
             alert('I am visible after hide'); 
}
$('#clickMeToHide').hide( iAmCallBackForHide );
Run Code Online (Sandbox Code Playgroud)


soh*_*970 10

DOM中的任何HTML元素都没有"隐藏"事件.你是如何"隐藏"你的元素的?您是否使用CSS更改显示或可见性?

如果您使用display:none来隐藏元素,则无法检测CSS何时更改.在IE中,您可以检测属性何时更改但不会扩展到样式值.您需要在CSS显示更改时抛出事件或执行事件正在执行的操作.


小智 5

两年后找到这篇文章的人:

您确切知道菜单何时可见,对吧?!CSS规则告诉你.因此,您可以使用jQuery 重新创建相同的规则并依赖于相同的"悬停事件" ,而不是依赖onShow或onHide事件:

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

此外,您的脚本现在独立于任何样式表,因此演示文稿详细信息不会指示网站行为(很好).

  • 如果鼠标是唯一输入,则此解决方案有效.如果应用程序支持键盘或触摸界面,那么这还不够. (5认同)