2012-12-07 61 views
3

当我提交表单时,表单“滑出”并使用$.get(),我加载另一个页面并将其滑入。在隐藏表单和显示下一页,div崩溃了,我所有的页脚东西都简单地结束了。JQuery:当元素隐藏时阻止div崩溃()

然后,当“下一页”完成加载时,页脚返回到底部(在新页面内容下)。 ,因为表单的大小可能会有很大的不同,我试图避免指定DIV的高度。

有什么办法让div不能改变?

代码:

$("#MyForm").hide("slide", { direction: "left" }, 250, function() { 
    $.get("../NewPage.html", function (data) { 
     $("#NewPagePlaceholder").html(data); 
     $("#NewPagePlaceholder").show("slide", { direction: "right" }, 250); 
    }); 
}); 

回答

2

上面的其他选项可能会更好,你有设置hieght的根据孩子的div选项但很难知道在没有看到任何代码的情况下这是否是一个好主意。

例如(未测试):

var height = $('#childdiv').height(); 
$('#childdiv').parent().css('height', height); 
+0

是的,我走了这条路线,简单而有效。谢谢 – Losbear

+0

因为您提供了代码,所以标记了答案:)但爆炸药片也帮助了我! - 多谢你们 – Losbear

9

您使用的CSS?我会做一个假设(糟糕的是我知道,但我看不到任何代码),您使用display:none;来隐藏div,而应该尝试使用visibility:hidden。如果你使用JQuery,也许你可以添加一个css()方法到选择器,并设置可见性以这种方式隐藏。

+0

是啊我使用jQuery和我使用.hide().show(),其改变显示为 “无” 和 “块”。我很乐意使用“可见性:隐藏”,但是有没有办法像“滑动”它一样,我很熟练地使用.hide()? – Losbear

0

仅在动画期间指定div的高度。也就是说,在滑出旧窗体之前,将div更改为相同的高度。新表单滑入后,移除此设定高度。

+0

我不能,因为(如问题中提到的那样),表单的字段数量是可变的,可能非常短或很长。 – Losbear

+0

@LoBear我不明白这个问题,那么..为什么不只是得到表格的高度? –

+0

如果我通过.height()获得高度,那么只有当我在css中指定该值时,才会给我一个值?还是回归他提出了DIV的高度? – Losbear

6

What @ user1394965说。下面是一个简单的例子:

.hide()将使对象的CSS属性为display: none,这将删除它在页面上占用的空间。该visibility: hidden属性将使其隐藏但仍然保持在页面上的空间。

所以,与其做:

$('#elementId').hide(); 

做到以下几点:

$('#elementId').css('visibility', 'hidden'); 
+0

我正在使用.show()和.hide()来为表单设置动画效果,但无法立即知道如何在更改可见性时保持这种行为:隐藏,所以我使用了BlueBird的建议。它像一个魅力 - 虽然感谢! – Losbear