我想使用一些按钮来显示/隐藏使用jquery的多个div。
该页面最初将显示所有div。接下来的想法是会有一个按钮重置(显示全部),然后单独按钮显示特定的div,同时隐藏其余部分。
非常感谢任何帮助。
<div class="buttons">
<a class="button" id="showall">All</a>
<a class="button" id="showdiv1">Div 1</a>
<a class="button" id="showdiv2">Div 2</a>
<a class="button" id="showdiv3">Div 3</a>
<a class="button" id="showdiv4">Div 4</a>
</div>
<div id="div1">Lorum Ipsum</div>
<div id="div2">Lorum Ipsum</div>
<div id="div3">Lorum Ipsum</div>
<div id="div4">Lorum Ipsum</div>
答案 0 :(得分:39)
jQuery(function() {
jQuery('#showall').click(function() {
jQuery('.targetDiv').show();
});
jQuery('.showSingle').click(function() {
jQuery('.targetDiv').hide();
jQuery('#div' + $(this).attr('target')).show();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="buttons">
<a id="showall">All</a>
<a class="showSingle" target="1">Div 1</a>
<a class="showSingle" target="2">Div 2</a>
<a class="showSingle" target="3">Div 3</a>
<a class="showSingle" target="4">Div 4</a>
</div>
<div id="div1" class="targetDiv">Lorum Ipsum1</div>
<div id="div2" class="targetDiv">Lorum Ipsum2</div>
<div id="div3" class="targetDiv">Lorum Ipsum3</div>
<div id="div4" class="targetDiv">Lorum Ipsum4</div>
答案 1 :(得分:18)
如果他们属于逻辑组,我可能会使用class approach already listed here 。
许多人似乎忘了你实际上可以在同一个jQuery选择器中按ID选择几个项目:
$("#div1, #div2, #div3").show();
其中'div1','div2'和'div3'都是您想要一次显示的各种div的id属性。
答案 2 :(得分:7)
为每个div分配一个class
。然后,您可以对所有这些操作执行操作:
$(".divClass").hide();
所以每个按钮都可以:
$(".divClass").hide()
$("#specificDiv").show();
你可以使它更通用,并使用明显的约定 - 按钮和id中相同数字的div是相关的。所以:
$(".button").click(function() {
var divId = "#div" + $(this).attr("id").replace("showdiv", "");
$(".divClass").hide();
$(divId).show();
}
答案 3 :(得分:2)
只是一个小小的注释......如果你在其他脚本中使用它,最后一行的$将导致冲突。只需用jQuery替换它就可以了。
jQuery(function(){
jQuery('#showall').click(function(){
jQuery('.targetDiv').show();
});
jQuery('.showSingle').click(function(){
jQuery('.targetDiv').hide();
jQuery('#div'+jQuery(this).attr('target')).show();
});
});
答案 4 :(得分:1)
简单但愚蠢的方法:
$('#showall').click(function(){
$('div[id^=div]').show();
});
$('#showdiv1').click(function(){
$('#div1').show();
$('div[id^=div]').not('#div1').show();
});
更好的一个 - 为所有div添加公共类,并在id为目标div的按钮中使用一些属性
答案 5 :(得分:1)
如果您希望能够用较少的代码显示/隐藏单个div和/或div组,只需对它们应用几个类,以便在需要时将它们插入到组中。
示例:
.group1 {}
.group2 {}
.group3 {}
<div class="group3"></div>
<div class="group1 group2"></div>
<div class="group1 group3 group2"></div>
然后你只需要使用一个标识符将动作链接到他的目标,并使用5,6行jquery代码,你就拥有了你需要的一切。
答案 6 :(得分:1)
选中此Example
<强> HTML 强>
<div class="buttons">
<a class="button" id="showall">All</a>
<a class="button" id="showdiv1">Div 1</a>
<a class="button" id="showdiv2">Div 2</a>
<a class="button" id="showdiv3">Div 3</a>
<a class="button" id="showdiv4">Div 4</a>
</div>
<div id="div1">1</div>
<div id="div2">2</div>
<div id="div3">3</div>
<div id="div4">4</div>
<强>使用Javascript:强>
$('#showall').click(function(){
$('div').show();
});
$('#showdiv1').click(function(){
$('div[id^=div]').hide();
$('#div1').show();
});
$('#showdiv2').click(function(){
$('div[id^=div]').hide();
$('#div2').show();
});
$('#showdiv3').click(function(){
$('div[id^=div]').hide();
$('#div3').show();
});
$('#showdiv4').click(function(){
$('div[id^=div]').hide();
$('#div4').show();
});
答案 7 :(得分:0)
我有同样的问题,请阅读这篇文章,但结束了构建此解决方案,通过使用JQuery的href
函数从attr()
的自定义类中获取ID来动态选择div。
这是JQuery:
$('a.custom_class').click(function(e) {
var div = $(this).attr('href');
$(div).toggle('fast');
e.preventDefault();
}
你只需要在HTML中创建这样的链接:
<a href="#" class="#1">Link Text</a>
<div id="1">Div Content</div>