如果你点击一个带有类&#34的元素;可点击",一个div"显示"会出现。 "显示的高度" div不相等。 根据这个div的高度,另一个div"容器的顶部边缘"应该适应。 但是,这适用于第一次点击,但不适用于连续点击:来自第二次"可点击"总是需要两次点击:第一次点击会加载内容,第二次点击会调整上边距。
$(document).ready(function(){
var display = $("#display");
var clickable = $(".clickable");
display.hide();
clickable.click(function(){
var clickableid = clickable.attr('id');
$.ajax({
cache: false,
type: 'get',
url: 'process.php?id=' + clickableid,
dataType: 'html',
success: function(content) {
$('#display').load('process.php?id=' + clickableid);
display.show(function(){
var newmargin = $("#display").height();
$('#container').css({"margin-top": + newmargin});
});
}
});
});
而不是:
display.show(function(){
var newmargin = $("#display").height();
$('#container').css({"margin-top": + newmargin});
});
我也尝试过:
display.show()
var newmargin = $("#display").height();
$('#container').css({"margin-top": + newmargin};
不幸的是无济于事:只有出现的方式不同。 有想法的人吗?
答案 0 :(得分:0)
我无法评论所以我必须提供一个真的不是的答案,但我认为你想要查看.done(function( data ){...})
成功并不一定意味着DOM已经完成呈现结果获得。
这些方法接受$ .ajax()请求终止时调用的一个或多个函数参数。这允许您在单个请求上分配多个回调,甚至在请求完成后分配回调。 (如果请求已经完成,则立即触发回调。)
另外,我对调用.load()
时发出的第二个请求感到困惑,这是一种完全按照$.ajax
请求执行操作的同步方式(??)
答案 1 :(得分:0)
编写css()方法的正确方法是没有加号,如下所示:$('#container').css({"margin-top": newmargin};