所以,我写了一个小页面:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script>
function slide() {
$("#d").slideUp("slow");
document.getElementById("d").innerHTML=Math.random();
$("#d").slideDown("slow");
}
</script>
</head>
<body>
<div id="d"></div>
<button onClick="slide()">do</button>
</body>
</html>
我不知道为什么,但div
内的文字在$("#d").slideDown("slow")
之前更改,正好在slideUp
开始时。
我希望它能够工作,以便首先#d
slideUp
,然后当它的高度接近0或者内部HTML将改变时,并且仅在slideDown
之后。
答案 0 :(得分:2)
这样做:
function slide() {
$("#d").slideUp("slow", function() {
$(this).html(Math.random).slideDown("slow");
});
}
这里,回调函数中的代码在动画完成后被称为。在您的原始代码中,情况并非如此。动画开始后立即内容发生变化。
阅读有关.slideUp()
<强>更新强>
顺便说一下。 document.getElementById
与jQuery中的$('#id')
相同。您可以使用.html()
功能。无需两次查找相同的元素。并且通过this
在回调函数中提供了动画元素。
答案 1 :(得分:1)
由于您使用的是jQuery,为什么不真正使用它?
$('#btnid').click(function() {
$("#d").slideUp("slow");
$('#d').html(Math.random());
$("#d").slideDown("slow");
});
对您的代码进行一些改进
答案 2 :(得分:0)
首先,因为您正在使用jQuery,请尝试changing the contents of #d using jQuery。 此外,如果您需要在slideUp完成时进行内容更改,则需要在slideUp内的回调函数内执行此操作。
答案 3 :(得分:0)