在$ .slideDown()</textarea>之后消失<textarea>

时间:2010-10-19 06:06:06

标签: jquery internet-explorer

我在IE7及以下版本中有一个问题,我正在切换通过$.slideUp()&amp; $.slideDown(),有一个消失的文本区域。

这是表格代码:

<% using (Html.BeginForm("AddComment", "Comment", FormMethod.Post, new { id = "addCommentForm", @class = "comments-form" }))
 { %>
    <input type="hidden" name="SiteID" value="<%: Model.Name %>" />
    <table>
        <colgroup>
            <col class="comments-form-text" />
            <col class="comments-form-submit" />
        </colgroup>
        <tbody>
            <tr>
                <td>
                    <textarea name="Text" rows="2" cols="75"></textarea>
                </td>
                <td>
                    <div>
                        <input type="submit" value="Add Comment" />
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
    <% } %>

我正在点击javascript(使用jQuery)按钮点击显示:$('#addCommentForm').slideDown();

我的问题是,在IE7及以下版本中,当表单完成向下滑动时,文本区域会消失。它只会在我大多数提交按钮(使用jQueryUI .button()方法设置样式)时重新出现。

当我说消失时,它消失了。看看IE开发工具中的html,它的html仍然存在,它根本就没有渲染。

尽管我非常讨厌IE,但我需要支持它:(

任何人都有任何想法为什么会这样?或者我如何减轻它?

2 个答案:

答案 0 :(得分:22)

有一些方法可以解决这个问题:

  • 尝试使用其他元素,例如 span而不是div元素 滑下。可能是IE的渲染 错误;
  • 另一种方法是设置zoom:1; 在你的CSS中你的元素 试图slideDown;
  • 您也可以解决此设置问题 min-height到你的滑动元素 你的CSS;

答案 1 :(得分:1)

在元素上设置宽度将解决问题。所有@paulillo解决方案都运行良好,但设置宽度将有助于保护您免受其他相关错误的影响。

slideDown暂时将位置设置为绝对位置,这有时会产生一个称为“跳转”错误的错误。发生这种情况是因为有时slideDown无法准确计算元素宽度在短时间内改变其绝对值时的高度。我讨厌设置宽度,除非我必须但在这种情况下,如果可以,我会推荐它。