jQuery中的onHide()类型事件

时间:2010-05-18 13:57:02

标签: jquery events javascript-events

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

我试过了:

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

但显然这不起作用。

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

ul li:hover ul {
    display: block;
} 

8 个答案:

答案 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)。

pratik916/jQuery-HideShow

  

此扩展程序会持续监视元素以查看可见性更改。一旦改变它将发出一个事件,你可以处理你的东西

$("#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>

这是小提琴https://jsfiddle.net/JerryGoyal/qs01umdw/2/

答案 7 :(得分:0)

这在某些用例中很有用: 使用waitUntilExists jquery插件(How to wait until an element exists?),您可以检测值何时发生变化:

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

我用它来检测何时隐藏了加载的gif。