如何在单击相应菜单项时显示/隐藏一部分内容,同时隐藏所有其他内容
How to show/hide a section of content when a corresponding menu item is clicked, while hiding all other content?
我试图在单击菜单项时显示一个部分的内容,同时隐藏页面上所有其他部分的内容。
这是html:
<nav>
<ul>
<li class="navServe">services</li>
<li class="navContact">contact</li>
</ul>
</nav>
<section class="services s-h">
<h1>Contents of services section</h1>
</section>
<section class="contact s-h">
<h1>Contents of contact section</h1>
</section>
css就像使用display none来隐藏包含内容的部分一样简单。
我一直在尝试这个jQuery:
$("nav ul li").click(function(){
$(".content").children(".s-h").css("display", "block");
$(this).siblings(".s-h").css("display", "none");
});
但是jQuery没有找到活动部分。事实上,当单击任一菜单项时,它都会显示两个部分(服务和内容)的内容。如何让jQuery找到相应菜单项的内容?
给定HTML,您可以这样做:
$("nav ul li").click(function(){
$("section.s-h").css("display", "none");
if ($(this).hasClass("navServe")) $("section.services.s-h").css("display", "block");
if ($(this).hasClass("navContact")) $("section.contact.s-h").css("display", "block");
});
随着你添加更多的部分,这将很快变得更长。为了改进它,你必须稍微更改一下HTML(很像@Ravi的建议):
<nav>
<ul>
<li class="navServe" data-target="section.services.s-h">services</li>
<li class="navContact" data-target="section.contact.s-h">contact</li>
</ul>
</nav>
<section class="services s-h">
<h1>Contents of services section</h1>
</section>
<section class="contact s-h">
<h1>Contents of contact section</h1>
</section>
data-target
属性可以包含指向section
标记的任何CSS选择器。
然后你的脚本可以是:
<script>
$("nav ul li").click(function(){
$("section.s-h").css("display", "none");
$($(this).data("target")).css("display", "block");
});
</script>
点击时,通过jQuery hasClass
函数检查点击了哪个导航,然后相应地显示和隐藏div。像这样:
$("nav ul li").click(function(){
if($(this).hasClass("navServe")){
$(".services").css("display", "block");
$(".contact").css("display", "none");
}else{
$(".contact").css("display", "block");
$(".services").css("display", "none");
}
});
1。给您的<li>
标签一个id
,
<li class="navServe" id="tab1">services</li>
<li class="navContact" id="tab2">contact</li>
2。为您的部分提供id,其中的内容显示
<section class="services s-h" id="section1">
<h1>Contents of services section</h1>
</section>
<section class="contact s-h" id="section2">
<h1>Contents of contact section</h1>
</section>
3。将其放在script
、上
$(document).ready(function() {
$("#tab1").click(function(e) {
$('#section1').css({"display":"block"});
$('#section2').css({"display":"none"});
});
$(document).ready(function() {
$("#tab2").click(function(e) {
$('#section1').css({"display":"none"});
$('#section2').css({"display":"block"});
});
您需要首先在nav和部分之间建立关系。在导航节点中添加一个数据目标,以指向适当的部分。
<nav>
<ul>
<li class="navServe" data-target=".services">services</li>
<li class="navContact" data-target=".contact">contact</li>
</ul>
</nav>
<section class="services s-h">
<h1>Contents of services section</h1>
</section>
<section class="contact s-h">
<h1>Contents of contact section</h1>
</section>
然后你可以这样做:
$("nav ul li").click(function(){
$(".s-h").hide();
var elem = $(this).attr("data-target");
$(elem).show();
});
JS Fiddle
相关文章:
- 如何添加浮动和非浮动,其他
- 与其他库的jQuery.noConflict()
- 播放当前视频时如何停止其他视频?JavaScript
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 除修剪外的其他功能
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- Array.length似乎不起作用;console.log则显示其他情况
- 如何消除代码中的未定义和其他问题
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 将 json 数组的一部分分别排序到同一数组的其他部分
- 删除在单击其他选项卡时生成的url查询元素的一部分
- 当鼠标悬停在页面的其他部分上时,如何滚动页面的一部分
- 如何打印字符串数组,这是JSON的一部分,由其他属性组成
- 如何阻止用户点击任何其他按钮,而页面刷新(从模态窗口解决方案的一部分)
- 从javascript中获取其他字段的值,javascript是select标记html的一部分
- 如何在单击相应菜单项时显示/隐藏一部分内容,同时隐藏所有其他内容
- 如何只删除我的域设置的cookie的一部分(为其他应用程序设置的其他几个cookie)
- 如何在我的网站显示其他网站的一部分