当文档准备好时,我在内容div中有一个页面加载。但是,我也有一些链接,只要用户点击它们,就会将不同的页面加载到同一个内容div中。我试图建立内容div的高度来控制其他东西,但是一旦div的高度设置在页面加载,我似乎无法获得内容div的新大小与其中的新页面...
例如,加载的页面为6000px,页面1的高度为500px,页面2的高度为300px。页面加载时,内容div设置为6000px。然而,当我点击第1页将其加载到内容div中时,内容div仍保持设置为6000px,即使内容本身的高度仅为500px,第2页也相同,等等...
这是html:
<div id="select">
<div id="menu">
<ul>
<li><a class="load" href="javascript:void(0)" id="page1">page1</a></li>
<li><a class="load" href="javascript:void(0)" id="page2">page2</a></li>
</ul>
</div>
</div>
<div id="spacer"></div>
<div id="content"></div>
这是CSS:
#select {
width: 215px;
top: 20px;
left: 10px;
position: absolute;
}
#spacer {
border-right:2px solid #000000;
left:10px;
width:215px;
position: absolute;
}
#content {
left: 227px;
top: 20px;
width: 703px;
padding: 0;
margin: 0;
position: absolute;
}
这是我的jquery:
$(document).ready(function() {
//Load content on page load
$("#content").html('<ul><li>Loading Content...</li></ul>')
.load("/content/" + "projects.php", null, function() {
contentHeight = $("#content").height();
selectHeight = $("#select").height();
$("#spacer").height(contentHeight + "px")
.css({"top": selectHeight + 40 + "px" });
});
//Load content on click
$(".load").click(function(){
loadName = $(this).attr("id");
$("#content").html('<ul><li>Loading Content...</li></ul>')
.load("/content/" + loadName + ".php", null, function(){
contentHeight = $("#content").height();
selectHeight = $("#select").height();
if(selectHeight < contentHeight) {
$("#spacer").css({"top": selectHeight + 40 + "px", "display": "block" })
.height(contentHeight + "px");
}else{
$("#spacer").css({"display": "none"});
return;
}
});
});
});
尝试更改事件以单击,而不是“加载”
你尝试将高度设置为“自动”吗?
编辑:我看了你在做什么,起初有点混乱(一点点CSS会帮助很多)。我想知道是否可能不使用“var”分配变量导致问题,但由于某种原因,这个脚本总是对我有用。
所以,我稍微清理了一下代码 - 我不确定你为什么每次都添加selectHeight,因为该值不应该改变 - 你可以在CSS中处理它,因为不需要绝对定位。
所以,试试这个(没有改变HTML,所以我没有添加它):
CSS
#spacer {
background: #555;
float: left;
width: 200px;
margin-right: 20px;
padding: 20px;
}
#content {
background: #444;
float: left;
width: 1000px;
padding: 20px;
}
脚本
$(document).ready(function(){
//Load content on page load
$("#content").html('<ul><li>Loading Content...</li></ul>')
.load("/content/" + "projects.php", null, function() {
$("#spacer").height( $("#content").height() + "px");
});
//Load content on click
$(".load").click(function(){
var loadName = $(this).attr("id");
$("#content")
.html('<ul><li>Loading Content...</li></ul>')
.load("/content/" + loadName + ".php", null, function(){
$("#spacer").height( $("#content").height() + "px");
});
});
});
有两种选择
1.)您可以将内容div中要加载的所有页面高度设置为内容div的相同大小
2.)Jquery等
首先清除右侧内容div $('#content')。remove();
第二次加载你的内容并在$('#content')的帮助下设置加载文档的高度.height(...)