当我点击一个锚标签时,我需要一个在不同div之间切换的实用解决方案。
我做了一个JSfiddle,这是我想要的解决方案。
问题是当我第一次点击“show 1”然后点击“show 2”时,前两个占位符的内容消失了,但没有新的内容出现。
我要这样:
当我单击“Show1”时,会出现两个占位符(占位符1和2)。
在不关闭占位符1和2的情况下单击“显示2”。占位符1和2应该关闭,占位符3应该出现。
Jsfiddle:http://jsfiddle.net/CY3tj/2/
HTML格式:

<a id="1" class="show">show 1</a>
 <br/ ><br/ >
<a id="2" class="show">show 2</a>

<div class="content-wrapper">
    <div id="item-1">
        <div>
            <h2>Placeholder1</h2>
            <p>Placeholder1</p>
        </div>
        <div>
            <h2>PLaceHolder2</h2>
            <p>Placeholder2</p>
        </div>
    </div>
        <div id="item-2">
            <div>
                <h2>Placeholder3</h2>
                <p>Placeholder3</p>
            </div>
        </div>
</div>

查询:
$(document).ready(function () {
    $(".content-wrapper").hide();
});

$(document.body).on("click", "a.show", function () {
    var id = $(this).attr("id");
    $(".content-wrapper > div").each(function () {
        if ($(this).attr("id") == "item-" + id) {
            $(this).show();
        } else {
            $(this).hide();
        }
    });
    $(".content-wrapper").toggle();
});

最佳答案

您可以将其简化为:

$(function(){
  var $allItems =  $(".content-wrapper > div"); //Cache the collection here.
  $(document).on("click", "a.show", function () {
      var id = this.id, itemId = "#item-" + id; //get the id and itemId
      $allItems.not($(itemId).toggle()).hide(); //Hide all items but not the one which is the target for which you will do a toggle
  });
});

Demo
不必通过JS隐藏包装器,只需添加一个规则来隐藏其内容。
.content-wrapper >div{
   display:none;
}

关于javascript - jQuery在不同的div之间切换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20010303/

10-11 04:01