代码之家  ›  专栏  ›  技术社区  ›  Neil Albrock

jquery在IE7中隐藏/显示方法行为

  •  1
  • Neil Albrock  · 技术社区  · 16 年前

    jquery hide()和show()方法有问题。下面是我当前正在处理的项目的一个片段。此代码来自一个完整加载的多页表单,然后jquery用于显示和隐藏各种页面。我应该意识到,除了IE7,这种技术在所有人身上都有效。

    //Hide all pages of the form
    $("#client_form div[id*='client']").hide();
    //Show just the first page
    $("#client_form div#client1").show();
    

    问题不在于hide()失败,而在于后面的show()没有返回所需的页面。我尝试过使用不同的方法,比如slideup()和slidedown(),我尝试过使用css(“display”,“none”),以及其他各种方法来执行隐藏/显示。

    我还尝试了链接方法,从隐藏到显示进行回调。在IE7中似乎没有什么工作正常。

    有什么想法哦强大的栈溢出蜂巢的心吗?

    多谢, 尼尔

    5 回复  |  直到 16 年前
        1
  •  2
  •   tvanfosson    16 年前

    你试过用潜水器的身份证吗?因为它们对页面是唯一的,所以不需要使它们与表单相关。

    $("div[id*='client']").hide().filter('#client1').show();
    

    注意链接,这样它就不需要重新转换DOM,只需过滤已经找到的元素。

        2
  •  1
  •   Parrots    16 年前

    就这样吧:

    $("#client1").show();
    

    不确定是这样,但试一下?ID应该是唯一的,因此不需要层次选择器。

        3
  •  0
  •   mkoryak    16 年前

    你有没有试着把一个类添加到你想要隐藏的所有div中,并隐藏这个类。 还可以将您的节目选择器更改为使用$(“client1”)而不是那个巨大的选择器。

        4
  •  0
  •   Graza    16 年前

    您是否做了一个简单的测试来确保您的第二个jquery返回了正确的对象(如果它返回了任何东西)?如:

    alert($("#client_form div#client1").length);
    

    或

    alert($("#client_form div#client1").get(0).innerHTML);
    

    或

    alert($("#client_form div#client1").eq(0).text());
    

    等?

    这将是我首先要开始的地方——然后您将知道您是对show()方法有问题,还是对jquery选择器的行为有问题。

        5
  •  0
  •   honeybuzzer    16 年前

    您还可以尝试通过验证器运行最终的HTML标记,以查看是否有任何错误。IE7比大多数其他浏览器更严格。

    推荐文章