Следующая jsFiddle изменения текста #more
в зависимости от видимости #extra
:Изменить текст, если ДИВ видна
<style>
#extra{
display: none;
}
</style>
<a href="#" id="more">More about us</a>
<div id="extra">Some Text</div>
<script>
$('#more').click(function() {
if ($('#extra').is(':visible')) {
$(this).text('Less about us');
} else {
$(this).text('More about us');
}
$('#extra').slideToggle('fast');
});
</script>
Это прекрасно работает. Однако, это больше не работает, если я ставлю slideToggle()
выше, если-заявление, как это (см это jsFiddle):
$('#more').click(function() {
$('#extra').slideToggle('fast');
if ($('#extra').is(':visible')) {
$(this).text('More about us');
} else {
$(this).text('Less about us');
}
});
В этом примере текст будет оставаться «Подробнее о нас» не имеет значения, если #extra
является скрытый или нет. Зачем?
Второе не работает, потому что значение if оценивается до завершения слайда. И в первом примере вам не нужно 'if (! $ ('# Extra'). Is (': visible')'? – j08691