我想知道我该怎么做只显示具有相同类名的多个div中的一个div。如果一个打开并且我点击另一个,那么打开的那个应该关闭,我点击的那个应该打开。
HTML:
<div class="out">
<div class="content"> <a>click here to learn more..</a>
</div>
</div>
<div class="out">
<div class="content"> <a>click here to learn more..</a>
</div>
</div>
<div class="out">
<div class="content"> <a>click here to learn more..</a>
</div>
</div>
CSS:
.out {
width:150px;
height: 25px;
background-color: green;
float: left;
margin-right:10px;
}
.open {
border-bottom:5px solid peru;
height: 150px;
}
.out.open .content {
width:100%;
height:100%;
}
a {
display: none;
}
.open .content {
display: block;
}
.open .content > a {
color: white;
text-decoration: underline;
display: block;
}
JS:
$(document).ready(function () {
$('.out').click(function () {
$('.out').find('open').removeClass('open');
$(this).addClass('open');
});
});
我知道问题出现在jquery中,但我不知道我做错了什么。
这也是一个小提琴:http://jsfiddle.net/4hpgb/22/
答案 0 :(得分:2)
只需更改此行:
$('.out').find('open').removeClass('open');
到此:
$('.out').removeClass('open');
发生的情况是,您要从所有open
删除所有课程div.out
,然后将课程open
添加到当前课程中。
答案 1 :(得分:2)
$('.out').click(function () {
$('.out').removeClass('open');
$(this).toggleClass('open');
});
答案 2 :(得分:2)
写:
$('.out').click(function () {
if(!($(this).hasClass('open'))){
$('.out.open').removeClass('open');
}
$(this).addClass('open');
});
答案 3 :(得分:1)
首先关闭所有打开的div
$(document).ready(function () {
$('.out').click(function () {
$('.out').find('open').removeClass('open');
$('.open').each(function(i,v){
$(this).removeClass('open');
});
$(this).addClass('open');
});
});
演示here