У меня есть «липкая навигация по боковой панели», которая расположена абсолютно относительно элемента #sidebar
, поэтому она следует за страницей внизу слева и всегда доступна. Чтобы сделать это, мне нужно было добавить высоту на боковую панель, поэтому я использовал некоторый код для динамического определения высоты контейнера. Это код, который я использовал:
<script type="text/javascript">
function matchColHeights(col1, col2) {
var col1Height = $(col1).height();
var col2Height = $(col2).height();
if (col1Height > col2Height) {
$(col1).height(col2Height);
} else {
$(col1).height(col2Height);
}
}
$(document).ready(function() {
matchColHeights('#sidebar', 'section#main-container');
})
</script>
В настоящее время #sidebar
div находится внутри секции, называемой section#maincontainer
. Ниже приведена очень упрощенная версия HTML.
<body>
<header>Header content</header>
<section id="main-container">
<div id="sidebar">
<ul>
This is the floated ul
<ul>
</div>
<div class="content">
This is where the content of the page sits
</div>
<div class="content2">
This is where the content of the page sits (because of the design there are often more than one divs floated right
<div>Within the content divs are potential expanding divs (accordions and tabs that change size)</div>
</div>
</section>
<footer>Footer content</footer>
</body>
Таким образом, у меня проблема в том, что в области содержимого есть расширяемый контент (вкладки и аккордеоны), а при расширении содержимого jQuery не обновляет высоту боковой панели до новой высоты (эта новая высота короче или длиннее первоначальной высоты). Я попытался добавить функцию в мой .click()
обработчик аккордеона (еще не пробовал с вкладками), но вот код, который используется для сброса моего аккордеона:
<!--Content Accordion-->
<script type="text/javascript">
$(document).ready(function() {
$('div.content-accordion> div').hide();
$('div.content-accordion> h4').click(function() {
var $nextDiv = $(this).next();
var $visibleSiblings = $nextDiv.siblings('div:visible');
if ($visibleSiblings.length ) {
$visibleSiblings.slideUp('fast', function() {
$nextDiv.slideToggle('fast');
$matchColHeights('#sidebar', 'section#main-container');
});
} else {
$nextDiv.slideToggle('fast');
$matchColHeights('#sidebar', 'section#main-container');
}
});
});
</script>
Как видите, я могу добавить функцию $matchColHeights('#sidebar', 'section#main-container');
в функцию щелчка, и она все еще не обновится до новой высоты. Я попробовал несколько других возможностей без удачи.