Otrzymuję nieprzewidywalne wyniki podczas wywoływania jquery's css("display")
na elemencie; czasami jest to flex
, innym razem jest to block
. Dziwne, że ten błąd występuje tylko wtedy, gdy używam jquery's show
/hide
, a błąd występuje około 50% czasu. Co jeszcze dziwniejsze, to widzę, że te wyniki są nawet wyświetlane.display: flex zmienia się losowo w display: blok z jquery hide/show i google webfont
Aktualizacja: Wydaje się również być związane z this google webfont css Jestem w tym. Jeśli usunę czcionkę, problem zniknie. To wszystko jest bardzo dziwne.
Oto uproszczenie mojego kodu:
JS:
$(document).ready(function() {
console.log("1 display: " + $("#foo").css("display"));
$("#foo").hide();
console.log("2 display: " + $("#foo").css("display"));
$("#foo").show();
console.log("3 display: " + $("#foo").css("display"));
});
html:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type="text/JavaScript"
src="http://code.jquery.com/jquery-1.6.3.min.js"></script>
<script type="text/JavaScript" src="script.js"></script>
<link href='http://fonts.googleapis.com/css?family=Forum' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="foo" class="centerer">
<p>Hello!</p>
</div>
</body>
</html>
css:
#foo {
background: white url("bg.jpg") center no-repeat;
background-size: 100vw auto;
}
.centerer {
display: flex;
flex-flow: column nowrap;
align-items: center;
justify-content: center;
}
Prawidłowe zachowanie powinno wydrukować:
1 display: flex
2 display: none
3 display: flex
Ale co widzę około 50% czasu jest:
1 display: block
2 display: none
3 display: block
Wszelkie pomysły na co może być przyczyną tego? Chcę wiedzieć, dlaczego.
show() i hide() zawsze będzie skutkować "bloku"/" Żaden". Jeśli chcesz zamiast tego flex, powinieneś używać klas css takich jak: '$ ('# foo'). AddClass ('flex'); $ ('# foo'). RemoveClass ("flex"). AddClass ('hideFlex') ' –
' hide() 'nie zna pojęcia' flex'. Zawijaj '# foo' w div za pomocą' display: block' i powinno działać. – thebjorn
@FabianLurz @thebjorn dokumentacja 'hide' twierdzi, że zapisze poprzednią wyświetlaną wartość dla' show' do przywrócenia. Zwróć też uwagę, jak "print 1: block" zostanie wydrukowany * zanim * 'hide' zostanie nawet wywołany. – Pubby