有没有更好的方法来编写这个Show/hide JQuery代码
Is there a better way to write this Show/hide JQuery code?
好吧,我终于按照我想要的方式工作了。
我需要它有不同的按钮来显示/隐藏和隐藏,如果要求显示另一个DIV,我还需要将我的a标签放置在远离DIV标签的位置,以及添加和删除活动的类。但是,尽管它有效,我知道它真的很乱。
这里有一个链接:http://jsfiddle.net/qKWC8/24/
这是JS:
$(document).ready(function() {
// Feature box 1
$('#show1').click(function() {
$('#show2,#show3,#show4,#show5,#show6').removeClass("active");
$("#feature-2,#feature-3,#feature-4,#feature-5,#feature-6").hide();
$("#feature-1").show();
$(this).addClass("active");
});
$('#hide1').click(function() {
$(this).parent().hide();
$('#show1').removeClass("active");
});
// Feature box 2
$('#show2').click(function() {
$('#show1,#show3,#show4,#show5,#show6').removeClass("active");
$("#feature-1,#feature-3,#feature-4,#feature-5,#feature-6").hide();
$("#feature-2").show();
$(this).addClass("active");
});
$('#hide2').click(function() {
$(this).parent().hide();
$('#show2').removeClass("active");
});
// Feature box 3
$('#show3').click(function() {
$('#show1,#show2,#show4,#show5,#show6').removeClass("active");
$("#feature-1,#feature-2,#feature-4,#feature-5,#feature-6").hide();
$("#feature-3").show();
$(this).addClass("active");
});
$('#hide3').click(function() {
$(this).parent().hide();
$('#show3').removeClass("active");
});
// Feature box 4
$('#show4').click(function() {
$('#show1,#show2,#show3,#show5,#show6').removeClass("active");
$("#feature-1,#feature-2,#feature-3,#feature-5,#feature-6").hide();
$("#feature-4").show();
$(this).addClass("active");
});
$('#hide4').click(function() {
$(this).parent().hide();
$('#show4').removeClass("active");
});
// Feature box 5
$('#show5').click(function() {
$('#show1,#show2,#show3,#show4,#show6').removeClass("active");
$("#feature-1,#feature-2,#feature-3,#feature-4,#feature-6").hide();
$("#feature-5").show();
$(this).addClass("active");
});
$('#hide5').click(function() {
$(this).parent().hide();
$('#show5').removeClass("active");
});
// Feature box 6
$('#show6').click(function() {
$('#show1,#show2,#show3,#show4,#show5').removeClass("active");
$("#feature-1,#feature-2,#feature-3,#feature-4,#feature-5").hide();
$("#feature-6").show();
$(this).addClass("active");
});
$('#hide6').click(function() {
$(this).parent().hide();
$('#show6').removeClass("active");
});
});
这是HTML:
<a href="#" id="show1">Show</a>
<a href="#" id="show2">Show</a>
<a href="#" id="show3">Show</a>
<a href="#" id="show4">Show</a>
<a href="#" id="show5">Show</a>
<a href="#" id="show6">Show</a>
<div id="feature-1">
Fill this space with really interesting content 1. <a href="#" id="hide1">Hide</a>
</div>
<div id="feature-2">
Fill this space with really interesting content 2. <a href="#" id="hide2">Hide</a>
</div>
<div id="feature-3">
Fill this space with really interesting content 3. <a href="#" id="hide3">Hide</a>
</div>
<div id="feature-4">
Fill this space with really interesting content 4. <a href="#" id="hide4">Hide</a>
</div>
<div id="feature-5">
Fill this space with really interesting content 5. <a href="#" id="hide5">Hide</a>
</div>
<div id="feature-6">
Fill this space with really interesting content 6. <a href="#" id="hide6">Hide</a>
</div>
这是CSS:
#feature-1,#feature-2,#feature-3,#feature-4,#feature-5,#feature-6 {
height:300px;
background-color: #99CCFF;
padding:20px;
margin-top:10px;
border-bottom:5px solid #3399FF;
display: none;
}
.active{background:#00FFFF;}
几乎总是有更好的方法…;)
JavaScript:
$("document").ready(function(){
$("#links a").click(function(){
$(".feature").hide();
$("#features div").eq($(this).index()).show();
});
$("a.hide").click(function(){
$(this).parent("div").hide();
});
});
HTML:(我稍微改变了您的HTML结构)
<div id="links">
<a href="#">Show</a>
<a href="#">Show</a>
...
</div>
<div id="features">
<div class="feature">
Fill this space with really interesting content 1. <a href="#" class="hide">Hide</a>
</div>
<div class="feature">
Fill this space with really interesting content 2. <a href="#" class="hide">Hide</a>
</div>
...
</div>
DEMO(JSFiddle)
您可以使用类而不是ID。根据您当前的标记,我已经缩小了您的代码,请尝试以下操作:
$(document).ready(function() {
$('a[id^=show]').click(function() {
var which = this.id.slice(-1);
$(this).addClass("active").siblings('a').removeClass("active");
$("div[id^='feature']").hide();
$("#feature-"+which).show();
});
$('a[id^=hide]').click(function() {
var which = this.id.slice(-1);
$(this).parent().hide();
$('#show'+which).removeClass("active");
});
});
Fiddle
<a href="#" onclick="myfunction('show1','feature-1')" class="anchors" id="show1">Show</a>
<a href="#" onclick="myfunction('show2','feature-2')" class="anchors" id="show2">Show</a>
<a href="#" onclick="myfunction('show3','feature-3')" class="anchors" id="show3">Show</a>
<a href="#" onclick="myfunction('show4','feature-4')" class="anchors" id="show4">Show</a>
<a href="#" onclick="myfunction('show5','feature-5')" class="anchors" id="show5">Show</a>
<a href="#" onclick="myfunction('show6','feature-6')" class="anchors" id="show6">Show</a>
<div class="features" id="feature-1">
Fill this space with really interesting content 1. <a href="#" onclick="$(this).parent().hide();">Hide</a>
</div>
<div class="features" id="feature-2">
Fill this space with really interesting content 2. <a href="#" onclick="$(this).parent().hide();">Hide</a>
</div>
<div class="features" id="feature-3">
Fill this space with really interesting content 3. <a href="#" onclick="$(this).parent().hide();">Hide</a>
</div>
<div class="features" id="feature-4">
Fill this space with really interesting content 4. <a href="#" onclick="$(this).parent().hide();">Hide</a>
</div>
<div class="features" id="feature-5">
Fill this space with really interesting content 5. <a href="#" onclick="$(this).parent().hide();">Hide</a>
</div>
<div class="features" id="feature-6">
Fill this space with really interesting content 6. <a href="#" onclick="$(this).parent().hide();">Hide</a>
</div>
/// javascript
function myfunction(anchor_id, feature_id){
$('.anchors').removeClass("active");
$(".features").hide();
$("#"+feature_id).show();
$("#"+anchor_id).addClass("active");
}
我已经最小化了你的一些JS代码,希望它能对你有所帮助
相关文章:
- Javascript Show Hide-将切换操作从复选框更改为<a href>链接
- show-hide只在ajax调用中第一次工作
- 请有人修复这个SHOW/HIDE表Javascript代码
- AngularJS:使用ng-show/hide动态维护下拉列表的3种状态(InProgress、Success、Err
- 有没有更好的方法来编写这个Show/hide JQuery代码
- jquery show/hide 不会等待完成
- 将 .show/.hide 与 .next 一起使用会导致问题
- show/hide() 更改块级元素的宽度/行为
- JavaScript/PHP [Show/Hide]
- 将 show/hide element jQuery 代码转换为 JavaScript
- jquery .show() .hide() puzzle
- Packery - jquery show/hide有效,但不能以其他方式工作
- jQuery Show & Hide Toggle
- 在 AngularJS 中使用 ng-show/hide 进行平滑过渡
- addEventListener (show/hide)
- Jquery show/hide 在我的服务器上不起作用
- 是否可以使用show/hide javascript来显示具有相同onclick命令的2个元素
- 升级simple-show/hide jQuery:显示第一个内容+粗体导航项
- 调用show/hide时引导模式不起作用
- Javascript : Ajax and Show/Hide Div