2016-09-20 5 views
0

Ist es möglich, einen Rückruf für die folgenden zu tun?Überprüfen Sie die Sichtbarkeit, bevor Sie fortfahren

Ich bin auf dieses Problem gestoßen, aber es scheint, als gäbe es Probleme bei der Verwendung in Chrom.

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

Grundsätzlich suche ich nach einem Weg, um zu bestätigen, dass die $('.element'), bevor Sie mit der nächsten Zeile sichtbar ist.

+1

'jQuery.css' ist eine synchrone, warum brauchen Sie' Versprechen' dafür? – Rayon

Antwort

0

Um ein Element sichtbar zu machen, versuchen Sie display:block oder display:inline-block (und eine Reihe anderer Anzeigeeigenschaften als display:hidden).

Hier ist ein difference between display and visibility properties.

Auch macht ein Element visible garantiert nicht, dass es für den Benutzer sichtbar ist, da es Kind von hidden parent element sein könnte. Sie können visible selector von jquery verwenden, um dasselbe zu bestätigen.

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

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

} 
1

ein Element Einstellung sichtbar zu sein ist synchron, so gibt es keinen Grund oder Zweck ein Versprechen mit, dass zu verwenden. Es gibt nichts zu erwarten.

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

Wenn auf der anderen Seite wollen Sie für neu streichen warten, so wird das Element tatsächlich auf dem Bildschirm gezeichnet, das ist eine andere Geschichte. Sie müssen entweder ein Repaint erzwingen (was in Browsern heutzutage eine knifflige Aufgabe ist, da synchrone Repaints vermieden werden sollen) oder Sie müssen eine leichte Verzögerung mit setTimeout() verwenden, die ein Repaint ermöglicht.

Verwandte Themen