多个div在点击时打开和关闭,div分为左和右

时间:2014-05-20 07:42:47

标签: javascript jquery html css

我有两个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/

4 个答案:

答案 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()
});