javascript - 无法使用 jQuery 在单击事件上获取 div 的高度
问题描述
我有一个绝对位置的 div,我需要它的高度来将该数字作为填充添加到其父级,这样它就不会与下面的 div 重叠。我知道这个 HTML 可以以不同的方式设置,但我无法控制 html。每个 div 的高度不同,因此每次单击 div 时,高度都必须改变,但我无法让它工作。
这甚至可能吗?
提前致谢!
$(document).ready(function(){
$('.content').hide();
$('.slides-wrapper').attr({
role: 'tablist',
'aria-multiselectable': 'false'
});
$('.content').attr('id', function (IDcount) {
return 'panel-' + IDcount;
});
$('.content').attr('aria-labelledby', function (IDcount) {
return 'control-panel-' + IDcount;
});
$('.content').attr('aria-hidden', 'true');
$('.content').attr('role', 'tabpanel');
$('.title').each(function (i) {
$(this).attr('role', 'tab');
var slideTarget = $(this).next('.content').attr('id');
var slideLink = $('<a>', {
'href': '#' + slideTarget,
'role': 'button',
'aria-expanded': 'false',
'aria-controls': slideTarget,
'id': 'control-' + slideTarget
});
$(this).wrapInner(slideLink);
});
$('.title a').click(function () {
if ($(this).attr('aria-expanded') == 'false') {
$('.title > a').attr('aria-expanded', false).removeClass('active').parent().next('.content').slideUp();
$(this).attr('aria-expanded', true).addClass('active').parent().next('.content').slideDown().attr('aria-hidden', 'false');
//THIS IS WHERE I ADD THE PADDING DYNAMICALLY SINCE THE CONTENT DIV IS ABSOLUTE
$(".inner").css("padding-bottom", $(".content[aria-hidden='false']").height());
} else {
$(".inner").css("padding-bottom", "0px");
$(this).attr('aria-expanded', false).removeClass('active').parent().next('.content').slideUp().attr('aria-hidden', 'true');
}
return false;
});
});
.slides-wrapper{
padding-bottom: 30px;
}
.slides-wrapper .inner{
display: flex;
justify-content: space-between;
}
.content{
width: 100%;
background: red;
position: absolute;
left: 0;
}
.slide{
padding:0px 30px;
}
.active{
color:red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="slides-wrapper">
<div class="inner">
<div class="slide">
<div><img src="http://via.placeholder.com/150" alt="image placeholder"></div>
<div class="title">First Slide</div>
<div class="content">
<p><strong>First slide content</strong> Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Donec sollicitudin molestie malesuada. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p>
</div>
</div>
<div class="slide">
<div class="field field--name-field-second-panel-image field--type-image field--label-hidden field--item"> <img src="http://via.placeholder.com/150" alt="image placeholder">
</div>
<div class="title">Second Slide</div>
<div class="content">
<p><strong>Second lside content </strong>Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Donec sollicitudin molestie malesuada. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p>
</div>
</div>
<div class="slide">
<div><img src="http://via.placeholder.com/150" alt="image placeholder"></div>
<div class="title">Third slide</div>
<div class="content">
<p><strong>Third slide content </strong>Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Donec sollicitudin molestie malesuada. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. <strong>Third Panel content </strong>Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Donec sollicitudin molestie malesuada. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.vv<strong>Third Panel content </strong>Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Donec sollicitudin molestie malesuada. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.<strong>Third Panel content </strong>Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Donec sollicitudin molestie malesuada. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.<strong>Third Panel content </strong>Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Donec sollicitudin molestie malesuada. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus.</p>
</div>
</div>
</div>
</div>
<div>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum congue leo eget malesuada. Vivamus suscipit tortor eget felis porttitor volutpat.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum congue leo eget malesuada. Vivamus suscipit tortor eget felis porttitor volutpat.vLorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum congue leo eget malesuada. Vivamus suscipit tortor eget felis porttitor volutpat.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum congue leo eget malesuada. Vivamus suscipit tortor eget felis porttitor volutpat.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec rutrum congue leo eget malesuada. Vivamus suscipit tortor eget felis porttitor volutpat.v
</div>
解决方案
推荐阅读
- regex - 使用正则表达式将单词组与任何其他单词匹配
- angular - Ionic 6 Angular,Ion-Slide.slideNext() 在自定义按钮事件中不起作用
- php - 遍历对象图时内存泄漏
- google-sheets-api - 当数据集大于 50k 个字符时,使用应用程序脚本将 csv 数据导入谷歌表格
- bash - 尝试使用 bash 脚本自动化我的 docker 容器会给我一个 OCI 运行时错误
- javascript - 如何防止元素沿对角线移动
- javascript - 保存 Javascript 函数的输出
- r - 错误:namespaceExport(ns,exports)中“R.utils”的包或命名空间加载失败:未定义的导出:.Last.lib [R with Windows]
- mysql - php-mysql left join table last data
- c# - 导航到路线不发生