【问题标题】:JQuery "$('div').hide() and .show" not working for a certain div?JQuery“$('div').hide()和.show”不适用于某个div?
【发布时间】:2011-10-25 20:50:55
【问题描述】:

我遇到了一个小问题。我有 jQuery hide()show() 函数在普通 <div> 元素的表单选择值上运行良好,但我有一个 <div> 元素(第一个),其中一些代码在它出现时不显示已选中。

以下是示例链接:http://www.shmoggo.com/3/diff.html

这是代码:http://www.shmoggo.com/3/diff.txt(抱歉,创建代码块太长了)

任何建议都将不胜感激。

谢谢!

【问题讨论】:

  • 可能是因为您的 ID 不正确:不能以数字开头。
  • 这是因为你隐藏了所有的 DIV。并且由于有一个 DIV 在 DIV#1 中,因此它被隐藏了。所以显示了DIV#1,但是隐藏了里面的DIV!
  • 您是否要显示/隐藏“上传完整作品”部分?
  • 是的,我只是在 Firebug 中查看源代码,Marco Johannesen 是正确的。 div#1 正确显示,但 div#1 div 被隐藏。所以这不是错误的 ID,但您应该将它们更改为正确的。
  • 感谢大家的cmets,所有的建议都让我找到了解决方案,我真的很感激。

标签: jquery html conditional show-hide


【解决方案1】:

您的 divid="1" 包含另一个 div,它被通用的 $('div').hide() 调用隐藏 - 之后再也不会显示。

另外,嵌套多个 $(document).ready() 调用是不必要的。

试试这个:

$(document).ready(function(){
    $("#dd").change(function(){
        var selected= $("#dd option:selected").data('size');
        $('div').hide();
        $div_to_show = $('#'+ selected); // cache element for better performance
        $div_to_show.show();
        $('div', $div_to_show).show(); // show divs nested below current div as well
    });

    $('div').hide();
});

编辑:另外,引用@bobince:

另请注意,纯数字 ID 在您使用的 HTML4 文档类型中无效(出于兼容性原因,通常应避免使用)

你绝对应该听那个。

【讨论】:

    【解决方案2】:

    id 为 2 和 3 的 div 是只有图像的简单 div。根据选择,仅显示或隐藏顶层(即)div2 和 div3。

    在 div 1 中,您有许多内部元素也设置为 display:none 因为您使用的是泛型 $('div').hide();

    在选择元素时始终使用 id 或 class 选择器。应避免使用泛型语句

    【讨论】:

    • 另请注意,纯数字 ID 在您使用的 HTML4 文档类型中无效(出于兼容性原因,通常应避免使用)。
    猜你喜欢
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2019-05-13
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    相关资源
    最近更新 更多