jquery - 隐藏和显示 div 元素无法正常工作
问题描述
我有一个side menu
其中有两个buttons
。默认情况下,我想查看profile
div
(现在可以使用)的内容,但是当单击 上的My reviews
按钮时sidebar
,我想隐藏 的内容, profile
div
而是显示review
div
. 但它不起作用。
我有以下代码:
<nav class="side-menu">
<div class="col-xs-3">
<ul class="nav nav-tabs tabs-left">
<li class="active">
<button id="profilebtn" type="submit">
<a href="#profile">Profile</a>
</button>
</li>
<li >
<form action="/findUserReviews" method="POST">
<button id="reviewbtn" type="submit" class="">
<a href="#review"></a>My Review</button>
</form>
</li>
</ul>
</div>
</nav>
<div id="review" >
<table>
<tbody>
<tr th:each="review: ${reviews}">
<form th:action="@{/edit_review}" method="post">
<td class="underline font-weight-bold"
th:text="${review.place.id}" />
<td>
<button type="submit" class="edit" name="action"
value="edit">Edit</button>
</td>
</form>
</tr>
</tbody>
</table>
</div>
<div id="profile" >
<form class="form-horizontal" th:action="@{/edit_profile}">
<fieldset class="fieldset">
<h3 class="fieldset-title">Personal Info</h3>
...
</fieldset>
</form>
</div>
这是我的jquery
代码:
<script >
$(document).ready(function(){
$("#reviewbtn").click(function() {
$("#profile").hide();
$("#review").show();
});
})
</script>
我得到的是profile
默认的 div,这是预期的,但是当我点击My review
按钮时,我会在我可以看到的profile
div 的顶部看到这个 div 的结果。当我单击profile
按钮时,我再次看到 profile
div
元素的结果,但它跳到了一点上方。我实际上想在页面的同一位置看到结果,只是必须根据单击的按钮更改内容。
任何帮助表示赞赏。
演示:
$("#reviewbtn").click(function() {
$("#profile").hide();
$("#review").show();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="reviewbtn" type="submit" class=""><a href="#review"></a>My Review</button>
<br/><br/>
<div id="review" style="display:none">
This is a review div
</div>
<div id="profile">
This is a profile div
</div>
解决方案
因此,在其他情况下,您必须将 divposition: absolute
和父元素都设为position: relative
. 这样,两个 div 相互堆叠。但是由于您使用的是hide()
哪些集合display: none
,它们不使用任何空间。
如果更改 div 的内容,我建议您将两者都放在一个 div 中。
我不确定此代码段是否是您想要的,如果您需要更多,请告诉我。
$("#reviewbtn").click(function() {
$("#profile").hide();
$("#review").show();
});
$("#profilebtn").click(function() {
$("#review").hide();
$("#profile").show();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="profilebtn" type="submit" class=""><a href="#review"></a>Profile</button>
<button id="reviewbtn" type="submit" class=""><a href="#review"></a>My Review</button>
<div id="SomeWrapper">
<div id="review" style="display: none; background: red;">
This is a review div
</div>
<div id="profile" style="display: block; background: blue;">
This is a profile div
</div>
</div>
推荐阅读
- keras - 在自定义数据集上使用 mobilenetV2 模型进行预测
- java - web.xml文件出现javaee_7.xsd错误如何解决?
- flutter - Flutter Text 小部件在显示值时省略序列“ff”
- java - Android Kotlin - RecyclerView - 获取回收项目的位置
- ios - 有没有办法在 viewDidLoad 之外的函数中调用视图控制器 self.view 的子视图?
- git - 在 git pull 之后,一些文件在本地被标记为已更改,实际上是在服务器后面
- bash - 如何执行 bash 脚本中的所有命令?
- node.js - 使用更新拉取从数组中删除一个元素的问题
- swift - 修复 Xcode 12.5 自动完成
- c# - 通过下载链接将 Razor 组件保存为 JPG/PNG/PDF