我有两个div
(左和右)。如果在左侧div
中点击了一个链接,则应该会在右侧div
中打开有多个问题的数据。每个问题都是可点击的,并在点击时显示答案。
我已经实现了以下内容,但是当问题打开时,上一个问题保持打开状态并且不会关闭。我尝试使用关闭相同链接的toggle
。
我的JavaScript:
$('.targetDiv').hide();
$('.show').click(function () {
$('#div' + $(this).attr('target')).toggle();
});
$('.innerdiv').hide();
$('.answer').click(function() {
$('#innerdiv' + $(this).attr('target')).toggle();
});
我的HTML:
<div style="width: 30%; float:left">
<div class="buttons">
<ul>
<li><a class="show" target="1">Placing an Order</a></li>
<li><a class="show" target="2">blah.com Returns & Cancellations FAQs</a></li>
<li><a class="show" target="3">Brands & Stock</a></li>
<li><a class="show" target="4">Shipping & Delivery</a></li>
<li><a class="show" target="5">Payment</a></li>
<li><a class="show" target="6">Pricing</a></li>
<li><a class="show" target="7">Value Added Tax (VAT)</a></li>
<li><a class="show" target="8">Privacy & Security</a></li>
<li><a class="show" target="9">About the Company</a></li>
</ul>
</div>
</div>
<div style="width: 70%; float:right">
<div id="div1" class="targetDiv">
<ul>
<li><a class="answer" target="1">I need personal assistance with my order. Who can I contact?</a><div id="innerdiv1" class="innerdiv" >Our customer service centre is happy to assist you with your order on +91 124 6733300 (10 AM - 7 PM)</div></li>
<li><a class="answer" target="2" >How do I start a new account?</a><div id="innerdiv2" class="innerdiv">blah blah </div></li>
<li><a class="answer" target="3">I am having problems ordering through your website. What can I do?</a> <div id="innerdiv3" class="innerdiv"> hahahahah </div></li>
<li><a class="answer" target="4" >I need personal assistance with my order. Who can I contact?</a> <div id="innerdiv4" class="innerdiv"> b;la ablahhap </div></li>
<li><a class="answer" target="5" >How do I start a new account?</a><div id="innerdiv5" class="innerdiv">blah blah </div></li>
</ul>
</div>
</div>
参见JSFiddle:http://jsfiddle.net/C59bE/8/
答案 0 :(得分:1)
为什么不在事先选择所有内部区域并隐藏它们,然后再切换属于目标的内部区域? http://jsfiddle.net/C59bE/9/
这样就变成了:
$('.targetDiv').hide();
$('.show').click(function () {
$('#div' + $(this).attr('target')).toggle();
});
$('.innerdiv').hide();
$('.answer').click(function(){
$('.innerdiv').hide();
$('#innerdiv' + $(this).attr('target')).toggle();
});
答案 1 :(得分:1)
更新: WORKING DEMO
也许这就是你要找的东西:
$(this).parent().siblings().find('div[id*=innerdiv]').hide();
这将选择所有其他#innerdivs *并隐藏它。
像:
$('.targetDiv').hide();
$('.show').click(function () {
$('#div' + $(this).attr('target')).toggle();
});
$('.innerdiv').hide();
$('.answer').click(function(){
$(this).parent().siblings().find('div').hide();
$('#innerdiv' + $(this).attr('target')).toggle();
});
<强> WORKING DEMO 强>
答案 2 :(得分:0)
您可以尝试隐藏所有内部区域,然后再显示单击的内容:
$('.answer').click(function(){
$(".innerdiv").hide();
$('#innerdiv' + $(this).attr('target')).toggle();
});
答案 3 :(得分:0)
Thanx我很容易就能得到答案。
$('.answer').click(function(){
var $target = $('#innerdiv' + $(this).attr('target')).toggle();
$('.targetDiv .innerdiv').not($target).hide()
});