如何隐藏内容一和显示内容二?

How to hide content one and show content two?

我这里有问题。我想在我的网站上隐藏一个内容并使用 jQuery 显示下一个内容。我只有 2 个内容 div。

所以基本上我想做的是...

1) 当我打开网站时 <div id="content2"></div> 隐藏以及 <div id="content2_bottom"></div>.

2) 当我单击 link <a href="#" id="click_to_change_content">Click</a> 时...带有 <div id="content1_bottom"></div> 隐藏和 content2 的 <div id="content1"></div> 可见。

我的代码:

$(function(){
   if ($("#content1").is(":visible")) {
      $("#content2").hide();
      $("#content2_bottom").hide();
   }
   $("#click_to_change_content").on("click", function(){
      $("#content1").hide();
      $("#content2").show();
      $("#content1_bottom").hide();
      $("#content2_bottom").show();
   });
});

它所做的实际上是交换内容,但它会立即交换回来,所以我一直只看到 content1。我确定我有问题,但我只是 jQuery 的初学者,所以我不知道我做错了什么。

感谢您的建议!

对于这个例子,我能想到的最简单的方法是使用 jQuery.toggle() 函数。只要在页面加载时隐藏这两个 div 之一,您只需一个函数即可在您按下按钮时隐藏一个并显示另一个。以这段代码为例:

Html:

<div id="content1">
  <label class="label label-success">Content 1</label>
</div>

<div id="content2" style="display:none;">
  <label class="label label-danger">Content 2</label>
</div>

<div>
  <button id="button" class="btn btn-primary">Toggle!</button>
</div>

<div>
  <a href="#" id="link">Toggle!</a>
</div>

Javascript(jQuery):

$(document).ready(function(){
  $("#button, #link").click(function(e){
    e.preventDefault();
    $("#content1, #content2").toggle();
  });
});

无需担心检查可见性状态,假设一个始终隐藏,.toggle() 将在您按下切换按钮时切换向用户显示哪个。

这是一个 Bootply 展示它是如何工作的:

Bootply - Toggle

希望对您有所帮助!

已编辑

显示 link 功能(基本相同,添加 e.preventDefault() 以停止任何页面移动。)

我更愿意使用 css 类 来显示和隐藏您的元素并使用 jquery 切换它们。示例:

<div class="content-section shown">Content 1</div>

<div class="content-section">Content 2</div>

<button id="click_to_change_content">click_to_change_content</button>

css:

.content-section {
    display: none;
}

.content-section.shown {
    display: block;
}

jquery:

$(function(){
   $("#click_to_change_content").on("click", function(){
          $(".content-section").toggleClass("shown");
   });
});

Example


但坚持你的 html 结构:

html:

<div id="content1">Content 1</div>
<div id="content1_bottom">Content 1 bottom</div>

<div id="content2">Content 2</div>
<div id="content2_bottom">Content 2 bottom</div>

<button id="click_to_change_content">click_to_change_content</button>

jquery:

$(function(){
   $("#content2, #content2_bottom").hide();
   $("#click_to_change_content").on("click", function(){
      $("#content2, #content2_bottom, #content1, #content1_bottom").toggle();
   });
});

Example