【发布时间】:2014-06-25 19:16:22
【问题描述】:
HTML:
<a href="" id="show_link">Show</a><div id="container">
<form class="form">
<a href="" class="align_middle">Link1</a>
</form>
<form class="form">
<a href="" class="align_middle">Link2</a>
</form>
<form class="form">
<a href="" class="align_middle">Link3</a>
</form>
Javascript:
var align_middle = function(element) {
var sidePadding = 20;
$(element).css("position", "static");
$(element).css("float", "left");
$(element).css("width", "auto");
var width = $(element).width();
var parentWidth = $(element).parent().width();
width = Math.min(width, parentWidth - sidePadding*2);
$(element).css("width", width);
var height = $(element).height();
var parentHeight = $(element).parent().height();
var top = (parentHeight - height)/2;
var left = (parentWidth - width)/2;
$(element).css("position", "absolute");
$(element).css("left", left + "px");
$(element).css("top", top + "px");
$(element).css("float", "");
};
$(document).ready(function(){
var elements = $(".align_middle");
$.each(elements, function(key,value){
align_middle(value);
});
$(elements).bind("DOMNodeInserted",function(){
align_middle(this);
});
$("#show_link").click(function(event){
event.preventDefault();
$("div#container").toggle();
});
});
CSS:
.form {
position: relative;
border-color: brown;
border-width: 3px;
border-style: dotted;
width: 150px;
height: 150px;
float:left;
margin-left: 10px;
overflow: hidden;
}
div#container{
overflow: auto;
margin-top: 10px;
}
我想用css属性隐藏div#container display: none;所以它在页面加载时被隐藏了,但是它破坏了 align_middle 函数。
当我通过 $.get 回调函数隐藏元素时,它工作得很好。 (切换链接也可以。)
为什么会这样?
【问题讨论】:
-
您实际上是在隐藏元素,您希望它的行为如何?你能再猜个谜吗?
-
也许我应该更新小提琴以显示它是如何破坏的?如果我把 display: none;在 div#container 的 CSS 中,Link1、Link2 和 Link3 不再居中..