代码之家  ›  专栏  ›  技术社区  ›  Alastair Pitts

在$.Slidedown()之后消失

  •  8
  • Alastair Pitts  · 技术社区  · 15 年前

    我在IE7和下面有一个问题,我切换VIA显示的窗体 $.slideUp() 和; $.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仍然存在,只是根本没有被呈现。

    虽然我非常讨厌,但我必须支持它:(

    有人知道为什么会这样吗?或者我如何减轻它?

    2 回复  |  直到 14 年前
        1
  •  22
  •   Júlio Paulillo    14 年前

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

    • 尝试使用其他元素,如 span 而不是 div 元素到 滑倒。可能是IE的渲染 缺陷;
    • 另一种方法是 zoom:1; 在你的css元素中, 试着往下滑;
    • 您还可以解决此设置A min-height 到你的滑动元件 你的CSS;
        2
  •  1
  •   Kenzic    15 年前

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

    slidedown临时将位置设置为absolute,这有时会产生一个称为“跳转”错误的错误。这是因为有时候当元素宽度在短时间内发生绝对变化时,向下滑动无法精确计算高度。我讨厌设置宽度,除非我必须这样做,但在这种情况下,如果可以的话,我会推荐它。