Я пытаюсь создать эффект show/hide, используя toggle и animate.
Я создал следующую скрипку:
который использует этот код:
<script>
$(document).ready(function(){
$('.moreinfo').hide();
$('.more').click(function (ev) {
var t = ev.target
$('#info' + $(this).attr('target')).slideToggle(500, function(){
console.log(ev.target)
$('#info2').animate({width: 570, height: 570, marginLeft: 0}, {duration: 2000},
"linear");
});
$(t).html($(this).is(':visible')? 'Hide Info (x)' : 'Show Info (+)')
});
return false;
});
</script>
Проблемы заключаются в следующем:
Спасибо за все ваше время и помогаем в этом заранее.
Я исправил свои 2 и 3 проблемы.
2) Вы изменяете текст в зависимости от того, видна ли "Скрыть информацию (x)". Как только это видно, он никогда не скрывается и поэтому никогда не будет переключаться.
3) Вы увеличиваете размер синего квадрата, но не оживляете его, чтобы вернуть его к исходному размеру.
Обновление. Для первой проблемы вы можете попробовать добавить fadeOut(), изменить html, fadeIn(), чтобы замедлить скорость до анимации.
$('.more').click(function (ev) {
var t = ev.target;
$('#info' + $(this).attr('target')).slideToggle(500, function() {
//$(t).html($(this).is(':visible')? 'Hide Info (x)' : 'Show Info (+)')
if($(t).html() == 'Show Info (+)') {
console.log(ev.target);
$('#info2').animate({width: 570, height: 570, marginLeft: 0}, {duration: 2000}, "linear");
$(t).fadeOut(function() {
$(this).html('Hide Info (x)').fadeIn(2000);
});
} else {
$('#info2').animate({width: 300, height: 20, marginLeft: 0}, {duration: 2000}, "linear");
$(t).fadeOut(function() {
$(this).html('Show Info (+)').fadeIn(2000);
});
}
});
});