87,993
社区成员
发帖
与我相关
我的任务
分享
$(function(){
// nav收缩展开
$('.nav-item>a').on('click',function(){
if (!$('.nav').hasClass('nav-mini')) {
if ($(this).next().css('display') == "none") {
//展开未展开
$('.nav-item').children('ul').slideUp(300);
$(this).next('ul').slideDown(300);
$(this).parent('li').addClass('nav-show').siblings('li').removeClass('nav-show');
}else{
//收缩已展开
$(this).next('ul').slideUp(300);
$('.nav-item.nav-show').removeClass('nav-show');
}
}
});
//nav-mini切换
$('#mini').on('click',function(){
if (!$('.nav').hasClass('nav-mini')) {
$('.nav-item.nav-show').removeClass('nav-show');
$('.nav-item').children('ul').removeAttr('style');
$('.nav').addClass('nav-mini');
//收缩时,获取收缩前的宽度
if (window.BarExpandedWidth==undefined){
window.BarExpandedWidth=$('.nav-item>a')[0].clientWidth;
}
}else{
$('.nav').removeClass('nav-mini');
//展开时,获取展开前的宽度
if (window.BarCollapseWidth==undefined){
window.BarCollapseWidth=$('.nav-item>a')[0].clientWidth;
}
}
var divNav=$('#mainFrameDiv');
resetMainFrame();
});
});
function resetMainFrame() {
//获取左侧导航栏宽度
var mainFrameDiv=$('#mainFrameDiv');
var navDiv=$('#divNav');
var divNavWidth=$('.nav-item>a')[0].clientWidth;
//layer.msg(divNavWidth);
}

var screenWidth = window.parent.document.body.clientWidth
var cueentBarWidth = $('.nav').width();
window.parent.document.getElementById('mainFrameDiv').style.width = screenWidth - cueentBarWidth - 1 + "px";
window.parent.document.getElementById('divNav').style.width = cueentBarWidth;
window.parent.document.getElementById('main frame left').style.width = cueentBarWidth;
我也才学习,确定不了原因。我分析的是这样:
触发获取宽度的事件是在mainLeft.jsp里面,但是要获取的div控件是在main.jsp里面。而mainLeft.jsp我是嵌在main.left里面的,相当于子页面。所以得先取的window.parent。不能直接用$(''#divID‘’)这样取。
不知道我的分析正不正确。
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<div id="oDiv" style="width:300px">test</div>
<script>
var oDiv = document.getElementById('oDiv');
console.log(oDiv.style.width);
console.log($('#oDiv').width());
// 设置了style的div是可以通过style.width属性获取(得到300px),也可能用jq的width方法获取(得到300)。
</script>