我知道这个问题似乎不可能。但我相信有人可以帮助我!javascript/jQuery在绘制之前获取元素高度?
我有一个带有选项和按钮的div,用户选择一个选项并单击“下一步”按钮。
我想要发生的是,带有选项的div需要动画到0px高度,使用ajax加载新内容,然后div需要重新动画到内容的新高度......
所以基本上div在缩小,然后在增长,但是在这之间,innerHtml正在改变!
代码中,我至今是:
function load_form(form_name){
var form_cont_elem = $("#form_container");
var collapse_elem = $("#collapsable");
// animate collapsable div to 0, callback ajax fetch
collapse_elem.animate({height: "0px"}, 500, function(){
$.get('/ajax/contact_form/' + form_name + '.html', function(data){
// hide form container
form_cont_elem.css({display: ""});
// load data into form container
form_cont_elem.html(data);
});
});
// get new height of form
var height_var = form_cont_elem.outerHeight();
// remove display:none
form_cont_elem.css({display: ""});
// re-animate collapsable div to new height
collapse_elem.animate({height: height_var}, 500);
}
的前按一下按钮是:
<div id="collapsable">
<div id="form_container">
<p>What is the Nature of your Question?</p>
<hr />
<ul>
<li><a>Quote</a></li>
<li><a>Feedback</a></li>
<li><a>Enquiry</a></li>
<li><a>Complaint</a></li>
</ul>
<button class="blue">Next</button>
<div class="clear"></div>
</div>
</div>
按钮点击后的HTML是:
<div id="collapsable">
<div id="form_container">
<form method="post" action="/php/mailer.php">
<fieldset>
<input type="hidden" name="quote" />
<label>Name</label>
<input type="text" name="name" size="30" maxlength="30" />
<label>Telephone Contact</label>
<input type="text" name="telephone" size="30" maxlength="30" />
<label>Email Address</label>
<input type="text" name="email" size="30" maxlength="100" />
<input class="orange" type="submit" name="submit" value="submit!" />
</fieldset>
</form>
</div>
</div>
现在这段JavaScript代码工作正常...
然而,当我得到#form_container
的NEW高度时,返回OLD高度......现在我假定这是因为新的信息还没有在浏览器中绘制出来...所以我如何克服这个问题?
生病请尝试,谢谢! – 2012-03-14 15:28:27
你已经发现的ajax问题已经成为当然的主要原因,这只是一种简化它的方法。 – 2012-03-14 15:31:55