Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery中的onHide()类型事件_Jquery_Events_Jquery Events - Fatal编程技术网

jQuery中的onHide()类型事件

jQuery中的onHide()类型事件,jquery,events,jquery-events,Jquery,Events,Jquery Events,有人知道jQuery中的onHide()事件或类似事件吗 我试过: $(this).bind('hide', function(){ console.log('asdasda') }) 但显然这不起作用 编辑: 只是澄清一下,它是使用CSS隐藏的display:none 我知道回调函数,但因为我没有隐藏它(CSS是),所以我不能使用它。 不管它值多少钱,我需要检查下拉列表何时可见。它由以下CSS显示: ul li:hover ul { display: block; } D

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

我试过:

$(this).bind('hide', function(){
    console.log('asdasda')
})
但显然这不起作用

编辑:
只是澄清一下,它是使用CSS隐藏的
display:none

我知道回调函数,但因为我没有隐藏它(CSS是),所以我不能使用它。 不管它值多少钱,我需要检查下拉列表何时可见。它由以下CSS显示:

ul li:hover ul {
    display: block;
} 
DOM中的任何HTML元素都没有“隐藏”事件。你是如何“隐藏”你的元素的?您是否使用CSS更改显示或可见性


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

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

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

对于两年后找到此职位的任何人:

你知道菜单什么时候是可见的,对吧?!CSS规则告诉你。因此,您不必依赖onShow或onHide事件,而可以使用jQuery重新创建完全相同的规则,并依赖完全相同的“悬停事件”:

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

此外,您的脚本现在的行为独立于任何样式表,因此演示详细信息不会决定网站行为(nice)。

这在某些用例中很有用: 使用waitUntilExists jquery plugin()可以检测值何时更改:

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

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

您可以在hide函数中传递回调函数

function iAmCallBackForHide() { 
             alert('I am visible after hide'); 
}
$('#clickMeToHide').hide( iAmCallBackForHide );
在jQuery中,3公开了“隐藏”和“显示”事件


我最近制作了一个插件,用于检测元素何时以任何方式隐藏或显示(通过核心javascript、inspector或jQuery隐藏/显示)

此扩展将继续监视元素的可见性更改。一旦改变,它将是一个事件,你可以处理你的东西

Easy pizy,用于以下用途:

JS:

HTML:



这是小提琴

不幸的是,我没有隐藏它,它被我的CSS隐藏了。这是一个很酷的黑客,但我个人宁愿覆盖核心jqCool,只要元素是使用
$.hide()
隐藏的;我在GitHub上启动了一个项目,以提供一个更通用的解决方案:我认为这是同一个解决方案的一个稍微优雅的版本,因为它不会留下一个变量。加上一个提前交货!如果鼠标是唯一的输入,则此解决方案有效。如果应用程序支持键盘或触摸界面,那么这是不够的。是的,@jbustamovej,但是问题中的li:悬停也不起作用。不过,这一点很好。使用它现在可以监听dom节点上属性的更改,包括我认为的样式和类属性……因此,这个问题的答案应该是肯定的。如果您使用jQuery的
.css('display','none')
,则应该支持它-只需监听“hide”事件。这是最正确的答案。砰砰!这很好,请记住,当您指定一个回调函数来隐藏(或显示)时,它们将成为默认持续时间为400ms的动画函数。如果出现问题,请指定
0
$(“#单击我隐藏”).hide(0,iAmCallBackForHide)这很好,但我不是在运行3,但这对未来派人士来说很好:数据每次更改该div时都会触发此事件。如果您更改CSS或添加类,也会触发此事件。为了使其仅在类更改时触发,您需要添加以下条件:
if(translations.attributeName==“class”&&translations.classList.contains(“hidden”){
…虽然不太容易,但仍然可行。
$(document).on("hide", function() { 
    console.log("browser page has been hidden");
});
$("#test_hidden").hideShow(function(e, visibility){
    if(visibility == "shown") {
        console.log("Element is visible");
    } else {
        console.log("Element is hidden");
    }
})
var observer = new MutationObserver(function(mutations) {
    console.log('div hide event fired!');
  });
  var target = document.querySelector('.mydiv');
  observer.observe(target, {
    attributes: true
  });
<div class='mydiv'>
</div>