【问题标题】:jQuery UI button won't stay hidden in IE7jQuery UI 按钮不会隐藏在 IE7 中
【发布时间】:2011-03-18 12:29:19
【问题描述】:

好的,

我制作了一个 twitter 风格的控制面板,用于对列表应用过滤器和排序, 它的代码是这样的:

<div id="drawer">
    <div id="orderDrawer" class="subDrawer" >
    <div class="closeDrawer clearfix ui-icon ui-icon-closethick">close</div>
    <h4>sorteer</h4>                    

    <div id="orderPanel">    
     <!--some content-->
    </div>
    </div>
    <div id="filterDrawer" class="subDrawer" >
    <div class="closeDrawer clearfix ui-icon ui-icon-closethick">close</div>
    <h4>Filters</h4>                    

    <div id="filterPanel">
    <!-- some content -->
    </div>
    <div id="filterButtonBar" class="drawerButtons">
    <button id='applyFilter' name='applyFilter'>Apply</button>
    </div>
    </div>
</div>

这与下面的 JS 代码一起工作:

        $("#orderPanelButton").click( function(){
            if( $(".subDrawer[id!=orderDrawer]").is(":visible") ) {
                $("#drawer").slideUp( function() {
                    $(".subDrawer").hide();
                    $("#orderDrawer").show();
                    $("#drawer").slideDown();   
                });
            } else {
                $(".subDrawer").hide();
                $("#orderDrawer").show();
                $("#drawer").slideToggle();
            }
        });


        $("#filterPanelButton").click( function(){
            if( $(".subDrawer[id!=filterDrawer]").is(":visible") ) {
                $("#drawer").slideUp( function() {
                    $(".subDrawer").hide();
                    $("#filterDrawer").show();
                    $("#drawer").slideDown();   
                });
            } else {
                $(".subDrawer").hide();
                $("#filterDrawer").show();
                $("#drawer").slideToggle();
            }
        });

最后我使用 jQuery UI 按钮来塑造按钮:

$("#applyFilter").click(function(){
                    $("#filterForm").submit();
                 });
$("[name='applyFilter']").button({icons: {
            primary:'ui-icon-arrowreturnthick-1-e'}});

这在所有经过测试的浏览器(FF、chrome、IE8)中都非常有效,但在 IE7 中却不行。在那里,当我使用必要的隐藏和 slideToggles 将#drawer 的内容从“过滤器”更改为“订单”时,会出现一个空的 applyFilter 按钮。当您将鼠标悬停在其上时会消失的幽灵。

这里的任何人都知道为什么会发生这种情况以及如何摆脱我的 IE7 代码中的这个烦人的小错误?

[10 年 7 月 22 日更新] 我找到了一个临时解决方案,但希望能找到更整洁的东西。 我添加了以下 JS,基于 PHP 的 MSIE 7.0 检测:

$(".subDrawer[id!=' . $drawer . 'Drawer]").find("button").each(function(){
   $(this).css("display","none");
});

$(".subDrawer[id=' . $drawer . 'Drawer]").find("button").each(function(){
    $(this).css("display","");
});

其中 $drawer = subDrawer ID 的第一部分(过滤器/订单)。

【问题讨论】:

  • 这是相当复杂的。你能做一个真实的演示吗?
  • 不幸的是,这是一个安全且私密的应用程序,我无法让您访问。稍后我会考虑制作一个纯演示页面,但我现在正忙于另一个问题。
  • 我只需将边距或文本缩进设置为 -9999px。 IIRC 函数是 $('.things').css('text-indent:-9999px;');
  • 使用 jsbin.com 制作交互式示例
  • 感谢您的提示,我会尽快尝试。

标签: jquery css jquery-ui show-hide jquery-ui-button


【解决方案1】:

您已经稍微了解了原因部分,这里将对此进行讨论: Why does jQuery show/hide use display:none instead of visibility:hidden?

我还认为“为什么”的一部分是由于 IE7 非标准 CSS 实现/解释(又名错误)。

我相信这里概述了修复: Fading issues in Internet Explorer 7 when using jQuery

http://jquery-howto.blogspot.com/2009/02/font-cleartype-problems-with-fadein-and.html

【讨论】:

  • 我不再遇到问题,因为该网站的那部分已被弃用。但是,您刚刚给我的信息很可能已经解决了它,过滤器问题对我来说是非常有价值的信息。非常感谢您回答这个已经开放了很长时间的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 2010-11-20
相关资源
最近更新 更多