2016-09-20 59 views
0

是否可以对以下对象执行回叫?继续操作前,请检查可见性

$('.element').css("visibility","visible"); 

我碰到过这个,但似乎有问题在Chrome中使用它。

$('.element').css("visibility","visible").promise().done(function(){ 
    alert('done! start stuff...'); 
}); 

基本上我正在寻找一种方法以确认$('.element')是在进行到下一行之前可见。

+1

'jQuery.css'是一个同步的,你为什么需要'promise'呢? – Rayon

回答

0

要使元素可见,请尝试使用display:blockdisplay:inline-block(以及除display:hidden以外的一组其他显示属性)。

这里是一个difference between display and visibility properties

此外,制作元素visible不保证它对用户可见,因为它可能是hidden parent element的子项。你可以使用jQuery的visible selector来确认。

$('.element').css("display","block"); 

if ($('.element').is(":visible") 
{ 

} 
1

设置元素可见是同步的所以使用与承诺没有任何理由或目的。没有什么可以等待的。

$('.element').css("visibility","visible"); 
console.log($('.element').css("visibility")); // will show "visible" immediately 

如果,另一方面,要等待这样的项目在屏幕上实际引出的重绘,这是一个不同的故事。你将不得不强制重绘(这是目前浏览器中非常棘手的非标准事情,因为他们试图避免同步重绘),或者你必须稍微延迟setTimeout(),这允许重绘发生。