我遇到了jQuery hide()和show()方法的问题。以下是我正在进行的项目的片段。这段代码来自一个多页面的形式,它完整地加载,然后jQuery用于显示和隐藏各种页面。我应该提到这种技术适用于除IE7之外的所有broswer。
//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”),以及其他各种方法来执行hide / show。
我也尝试过链接方法,从hide进行回调再显示。在IE7中似乎没有什么工作正常。
任何想法哦强大Stack Overflow蜂巢的想法?
非常感谢, 尼尔
答案 0 :(得分:2)
您是否尝试过使用DIV的ID?由于它们对于页面是唯一的,因此您不需要相对于表单进行制作。
$("div[id*='client']").hide().filter('#client1').show();
请注意链接,因此它不需要回溯DOM,而只是过滤它已经找到的元素。
答案 1 :(得分:1)
仅仅是:
$("#client1").show();
不确定是不是,但试一试? ID应该是唯一的,因此不需要分层选择器。
答案 2 :(得分:0)
您是否尝试将类添加到您要隐藏的所有div中,并隐藏该类。 同时更改您的节目选择器以使用$(“#client1”)而不是那个巨大的选择器。
答案 3 :(得分:0)
你做过一个简单的测试,以确保你的第二个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选择器的行为。
答案 4 :(得分:0)
您也可以尝试通过验证程序运行最终的HTML标记,看看是否有任何错误。 IE7比大多数其他浏览器更严格。