Я новичок в JQuery и веб-разработке в целом, и теперь я застрял в проблеме, которую я, похоже, не могу преодолеть. Я ищу DRY-решение для моей анимированной навигационной панели JQuery. Вы можете получить эту идею, взглянув на следующую несудовую версию:Решение DRY для анимированного навигатора JQuery
$(document).ready(function(){
$('#box1').on('click', function() {
$('#box1').css({'height':'100px', 'transition':'height 1s'});
$('#box2').css({'height':'50px', 'transition':'height 1s'});
$('#box3').css({'height':'50px', 'transition':'height 1s'});
});
$('#box2').on('click', function() {
$('#box1').css({'height':'50px', 'transition':'height 1s'});
$('#box2').css({'height':'100px', 'transition':'height 1s'});
$('#box3').css({'height':'50px', 'transition':'height 1s'});
});
$('#box3').on('click', function() {
$('#box1').css({'height':'50px', 'transition':'height 1s'});
$('#box2').css({'height':'50px', 'transition':'height 1s'});
$('#box3').css({'height':'100px', 'transition':'height 1s'});
});
});
https://jsfiddle.net/cm70947/m06799xh/
То, что я не понимаю, что как я могу контролировать высоту DIV в СУХОЙ контексте, так что, когда, например, # box1 щелкнут, он увеличивается в высоту от 50 пикселей до 100 пикселей, а другие divs уменьшаются с 100 пикселей до 50 пикселей в одно и то же время? Я ищу аналогичное поведение, как и для css-переходов. У меня есть еще один пример, иллюстрирующий, как здесь я думаю, что DRY версия будет выглядеть (надеюсь, это даст вам представление о том, что я после здесь):
http://jsfiddle.net/cm70947/q2nxmaps/
Проблема со вторым примером является то, что при Я нажимаю eg # box2, то # box1 остается 100px, тогда как я хотел бы, чтобы он уменьшался в высоту от 100px до 50px. Я также пробовал некоторые решения removeClass/addClass, но пока не повезло.
Любая помощь очень ценится!
Благодарим вас за пример. Я уже пробовал этот подход vs .not (this), но не смог реализовать его должным образом. Это то, что я искал. – Christian