У меня есть, наверное, немой вопрос, но я не могу понять это сам...
Я хотел бы альтернативно fadeIn/fadeOut два div, нажав на третий.
Ниже приведен нерабочий пример: http://jsfiddle.net/ShLqJ/
Вот html:
<div id="a"> </div>
<div id="alpha"> ALPHA </div>
<div id="beta"> BETA </div>
CSS:
#a { width: 200px; height: 40px; line-height: 40px; background-color: red; text-align: center; }
#a:hover { cursor: pointer; }
#alpha, #beta { width: 200px; height: 100px; margin-top: 20px; }
#alpha { background-color: blue; }
#beta { background-color: green; }
И js:
$(document).ready(function(){
$('#beta').hide();
$('#a').click(function() {
$('#alpha').fadeOut("slow", function() {
$('#beta').fadeIn();
});
});
});
Я могу сделать первую анимацию (fadeOut alpha, fadeIn beta), но во втором клике я бы хотел сделать инверсию и так далее...
Какие-либо предложения?
благодаря
Пытаться
$(document).ready(function () {
$('#beta').hide();
var el = '#alpha';
$('#a').click(function () {
$(el).fadeOut("slow", function () {
el = el == '#alpha' ? '#beta' : '#alpha';
$(el).fadeIn();
});
});
});
Демо: скрипка
Вы можете выбрать оба элемента и фильтровать видимый, .fadeOut()
видимый и .fadeIn()
скрытый.
var $e = $('#beta, #alpha').filter('#beta').hide().end();
$('#a').click(function() {
$e.filter(':visible').fadeOut("slow", function() {
$e.not(this).fadeIn();
});
});
Вот версия, которая переворачивается между двумя:
$(document).ready(function(){
$('#beta').hide();
$('#a').click(function() {
$('#alpha').toggle(500);
$('#beta').toggle(500);
});
});
Измените свой HTML-код на:
<div id="a">
</div>
<div class="alpha"> ALPHA </div>
<div class="alpha"> BETA </div>
поэтому вы можете использовать классы, потому что идентификаторы уникальны, и вы можете контролировать оба, а не один за другим.
Теперь у вас есть два варианта.
1 Используйте fadeToggle
(Javascript):
$(document).ready(function(){
$('#beta').hide();
$('#a').click(function() {
$('.alpha').fadeToggle();
});
});
2 Создайте переменную изменения (Javascript): var alpha = 0; $ (document).ready(function() {$ ('# beta'). hide(); $ ('# a'). click (function() {$ ('. alpha'). fadeTo ('slow', alpha); if (alpha == 0) {alpha = 1;} else {alpha = 0;}});});
Я бы использовал первый вариант, потому что он требует меньше кода и его легче читать.
Я не мог придумать лучшего способа, кроме использования условного оператора:
$(document).ready(function(){
var $alpha = $('#alpha'),
$beta = $('#beta').hide();
$('#a').click(function() {
var $in, $out;
if($alpha.is(':visible')) {
$in = $beta, $out = $alpha;
} else {
$in = $alpha, $out = $beta;
}
$out.fadeOut("slow", function() {
$in.fadeIn();
});
});
});
Jquery делает это очень просто, вот пример использования fadeToggle()
:
$(document).ready(function(){
$('#a').click(function() {
$('#alpha').fadeToggle();
$('#beta').fadeToggle();
});
});
Вам просто нужно запустить один из двух разделов с display: hidden
.
Вот JSFiddle