首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery在点击时显示div,在多个嵌套div中隐藏其他

jQuery在点击时显示div,在多个嵌套div中隐藏其他
EN

Stack Overflow用户
提问于 2012-11-06 12:21:52
回答 3查看 11.1K关注 0票数 2

当我将它们放在多个div中时,它似乎不再起作用。我遗漏了什么?谢谢

演示:http://jsfiddle.net/HVfaA/206/

代码语言:javascript
复制
<div id="content">
<div id="first">
<div id="first-1">
<div id="first-2">
<div id="first-3">
<li><a href="#" class="one">One</a></li>
<li><a href="#" class="two">Two</a></li>
<li><a href="#" class="three">Three</a></li>
<li><a href="#" class="four">Four</a></li>
</div>
</div>
</div>
</div>
<div id="second">
<div id="second-1">
<div id="second-2">
<div id="second-3">
<div id="one">One</div>
<div id="two">Two</div>
<div id="three">Three</div>
<div id="four">Four</div>
</div>
</div>
</div>
</div>
</div>

$("div#second > div").hide();
var divs = $("#one, #two, #three, #four");
$('li a').on('click', function () {
$(divs).hide();
$("#" + $(this).attr("class")).show();
});​

此函数是Peter Ajtai jQuery show div on click, hide the others提供的函数的修改版本

下面的原始问题:我尝试使用包含链接的单独div来显示div。当前单击链接时,隐藏的div不会显示。谢谢你的帮助。下面是关于jsfiddle - http://jsfiddle.net/HVfaA/184/的演示

代码语言:javascript
复制
<div id="first">
<li><a href="#" class="one">One</a></li>
<li><a href="#" class="two">Two</a></li>
<li><a href="#" class="three">Three</a></li>
<li><a href="#" class="four">Four</a></li>
</div>
<br /><br />
<div id="second">
<div id="one">One</div>
<div id="two">Two</div>
<div id="three">Three</div>
<div id="four">Four</div><br/><br/>
</div>

// Optional code to hide all divs
$("div#second").hide();

// Selector
var divs = $("#one, #two, #three, #four");

// Show chosen div, and hide all others
$("li a").click(function () 
{
$("#" + $(this).attr("class")).show();
divs.not(("#" + $(this).attr("class"))).hide();
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-06 12:39:28

问题在于,您已经将所有div包装在div#second中,然后隐藏了该元素。因为它们的父级是隐藏的,所以不会显示任何子div (#one, #two, #three, #four)。

如果您想先隐藏所有div,请尝试

代码语言:javascript
复制
// Optional code to hide all divs
$("div#second > div").hide();

这不是直接相关的,但顺便说一句,你可以通过改变隐藏divs.not(("#" + $(this).attr("class"))).hide();的顺序(全部隐藏,然后显示一个)来去掉div。此外,由于您已经将它们存储为divs,因此您也可以直接引用它们。

代码语言:javascript
复制
// Show chosen div, and hide all others
$("li a").click(function () {
    $(divs).hide();
    $("#" + $(this).attr("class")).show();
});​

请参阅更新的提琴http://jsfiddle.net/HVfaA/190/

票数 4
EN

Stack Overflow用户

发布于 2012-11-06 12:42:37

只需在你的点击处理程序中显示你的div,它就会工作:

代码语言:javascript
复制
$("div#second").show();

演示:http://jsfiddle.net/HVfaA/191/

票数 2
EN

Stack Overflow用户

发布于 2012-11-07 05:27:55

CSS:

代码语言:javascript
复制
.Main-Div {position: relative; left: -9999px;}
.Inner-Div {position: relative; left: 9999px;}

Javascript:

代码语言:javascript
复制
// Optional code to hide all divs
$("div#second > div").addClass('Main-Div');

// Selector
var divs = $("#one, #two, #three, #four");

// Show chosen div, and hide all others
$('li a').on('click', function () {
    $(divs).removeClass('Inner-Div');
    $("#" + $(this).attr("class")).addClass('Inner-Div');
});

Fiddle

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13244329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档