【问题标题】:jQuery - display div frojQuery - 显示 div
【发布时间】:2013-09-07 00:39:04
【问题描述】:

我正在创建一个成员的个人资料页面。成员的名字是他们的生物 id 的链接。期望的结果是,当每个人的姓名被点击时,他们的简历详细信息会出现在页面上特定的 css 样式框中。页面加载时框的背景和边框可见,但没有内容。单击另一个名称时,以前的简历将返回隐藏,而当前的简历将更改为显示。对此新手可能没有一个简单的答案。

    <script type="text/javascript">
$(document).ready(function() {
         $(document).ready(function() {
            $("#bioLinks div a").click(function(){  
                $("#bios .show").removeClass("show").addClass("hide");
                var bio = $("#bios ." + $(this).attr("id"));
                bio.removeClass("hide");
                bio.addClass("show");
                })
        });
</script>

链接和框的样式部分的 css:

#bios {background:#FFFFCC; border-style:solid; border-color:#ffd119; padding:15px; width:600px;text-align:left;position:absolute; top:200px;left:20px;}
.show {display:block; width:600px;}
.hide {display:none;}
.biopic {float:left; margin-right:15px; width:200px; height:200px; border-style:solid; border-color:#000099;clear:left;}
.biostext {display:inline; margin-left:15px; font-family:Georgia, serif; clear:right;}
#bioLinks {float:left; display:block; font-family:Georgia, serif;  margin-left:25px; margin-top:15px;clear:right;}
a {font-family:Georgia,serif; color:#0000ff; text-decoration:none;}

链接本身,虽然实际上会有几十个:

<div id="bioLinks">
  <div><a href id="bio1">Joe Bloggs</a></div>
  <div><a href id="bio2">Monica Faux</a></div>
  <div><a href id="bio3">John Doe</a></div>
</div>

还有个人简介,但出于隐私考虑,照片已被删除:

<div id="bios">
        <div class="bio1 hide">
            <!--div class="biopic"><img src="http://www. -- snip--.jpg" width="200" height="200" alt="Joe Bloggs"-->
            <!--/div-->
            <div class="biostext">Joe Bloggs is just like everybody else.
            </div>
        </div>
        <div class="bio2 hide">
            <!--div class="biopic"><img src="http://www. -- snip--.jpg" width="200" height="200" alt="Monica Faux"-->
            <!--/div-->
            <div class="biostext">Monica Faux is a belle with a shady past.</div>
         </div>
         <div class="bio3 hide">
            <!--div class="biopic"><img src="http://www. -- snip--.jpg" width="200" height="200" alt="John Doe"-->
            <!--/div-->
            <div class="biostext">John Doe is an unknown in the organisation.
            </div>
         </div>
</div>

当我在 Chrome 和 IE 中测试我的代码时,加载时会显示空框,但单击链接不会产生任何结果。

【问题讨论】:

  • 你能创建一个 jsfiddle 吗?另外 - 在您的示例中,所有 HTML 都被注释掉了。是不是搞错了?
  • 不确定如何创建 jsfiddle?不是所有的html都被注释掉了,只有img src divs?
  • W3 Schools 验证器试图提供帮助,但我太无知了,不知道这意味着什么:错误第 85 行,第 16 列:“HREF”不是为任何指定的组的成员属性
  • 我仍然对为什么相同的代码在这些小提琴中而不是在页面上工作感到困惑。我已经尝试将页面剥离为仅出现在小提琴中的此代码,但它也不会那样工作。在 IE 中,链接甚至不显示为链接,光标停留为 I-bar。

标签: javascript jquery onclick show-hide


【解决方案1】:

Working Fiddle

我相信您的问题是语法问题。你不应该双重绑定$(document).ready(),看起来无论如何都比所需的右括号数量少一个。

把你的javascript改成

$(document).ready(function () {
    $("#bioLinks div a").click(function () {
        $("#bios .show").removeClass("show").addClass("hide");
        var bio = $("#bios ." + $(this).attr("id"));
        bio.removeClass("hide");
        bio.addClass("show");
    })
});

看看能不能解决问题

另一方面,您使用了不正确的方法来注释 HTML。 HTML 的结束注释是--&gt; 而不是--!&gt;

【讨论】:

  • 哎呀,感谢您对注释的澄清,当我带着文件返回系统时,我会尝试您的更改。你是对的,它看起来像是我的工作文件中的剪切粘贴错误。
  • 唉,还是一无所获。但是这两种解决方案都不适用于我的页面,所以我怀疑错误在其他地方。不过,感谢您的新眼睛!
  • 请参阅上面我对 Sheikh Heera 的回答,如果我是正确的,小提琴将错误代码标记为红色,为什么我的许多 css 属性会如此标记?如果您的演示即使使用红色代码也能正常工作,它们不会是致命错误吗?
  • 不确定为什么要突出显示 CSS 值。即使浏览器可以解析它们,它们也可能不遵守 W3 标准。修复标记问题很重要,因为某些浏览器处理缺少的关闭标签和属性的方式与其他浏览器不同
【解决方案2】:

你可以试试这个

$("#bioLinks div a").click(function () {
    $("#bios > div").removeClass("hide").hide();
    var bio = $("#bios ." + $(this).attr("id"));
    bio.show();
});

DEMO.

【讨论】:

  • 这看起来很有趣,我现在无法尝试,但是对于不按顺序点击的用户来说,这仍然有效吗?
  • 是的,可以,检查演示。
  • 嗯,它在演示中运行得非常好,但在我的页面上根本没有,所以我猜脚本不是问题。不过,谢谢你,提出更多问题的答案仍然是一个答案。
  • 我对此进行了编辑,以消除生物文本中无关的 (p),这是先前尝试的遗物。这清除了我红色标记的 div 以小提琴结尾。我以前没有使用过这个(非常方便的btw)小提琴,但看起来它用红色标记了错误的代码。那么为什么小提琴演示将我的 href id="bio1" 等标记为红色?我的几个 css 属性也被标记为红色,但我没有看到它们有任何磨损?
  • 我已经知道我正在引用 jQuery 1.something-ancient,并且已经更新为使用 1.9.1,就像你在小提琴中使用的那样,但没有成功。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多