我该如何改进我的jQuery显示/隐藏实现?
问题描述:
我正在使用以下来显示和隐藏div。它的工作原理,但我不禁认为它可以更有效。在简单的例子中,我展示了3个国家,但是我的代码需要处理几十个。我对jQuery非常陌生。有没有办法只是说:“点击显示任何国家,并隐藏其余的”?我该如何改进我的jQuery显示/隐藏实现?
的HTML
<div class="nav">
<span id="France">France</span>
<span id="Canada">Canada</span>
<span id="Portugal">Portugal</span>
</div>
<!-- show div based on which span is clicked; hide the rest -->
<div class="content">
<div class="France all">...</div>
<div class="Canada all">...</div>
<div class="Portugal all">...</div>
</div>
jQuery的
$(document).ready(function(){
$("#France").click(function(){
$(".all").hide();
$(".France").show();
});
$("#Canada").click(function(){
$(".all").hide();
$(".Canada").show("");
});
$("#Portugal").click(function(){
$(".all").hide();
$(".Portugal").show("");
});
});
答
是的,你可以这样做:
$('.nav span').click(function(){
$('.all').hide();
$('.'+this.id).show();
});
答
你可以拿走类all
并使用.siblings().hide()
$('.nav span').click(function(){
$('.'+this.id).show("").siblings().hide("");
});
答
$('.nav span').on('click', function() {
$('.content > div').eq($(this).index()).toggle().siblings().hide();
});
+0
是非常感谢!切换,当然:) – user1910503
答
你可以跟踪什么显示:
$(document).ready(function(){
var $current,
$contents = $('.content .all').hide();
$('.nav span').click(function() {
if ($current) {
$current.hide();
}
$current = $contents.filter('.' + this.id).show();
});
});
所有伟大的解决方案 – user1910503