2010-04-20 77 views
0

有没有更好,更有效的方式来编写这段代码?这是一个转换下拉菜单,允许用户为多人提供RSVP。对不起,这有点乱,但我认为我正在做的事很清楚。如果没有,我在我的电脑上,并将迅速做出响应,并提供更多信息。更有效的方式来写这个jquery代码

//There's got to be a better way to do this 
$('#guest_num_1').click(function() { 
$('#num_guests a#quant_guests').html("1") 
$('.guest_name_2, .guest_name_3, .guest_name_4, .guest_name_5, .guest_name_6 ').hide() 
}); 

$('#guest_num_2').click(function() { 
$('#num_guests a#quant_guests').html("2") 
$('.guest_name_2').fadeIn() 
$('.guest_name_3, .guest_name_4, .guest_name_5, .guest_name_6').hide() 
}); 

$('#guest_num_3').click(function() { 
$('#num_guests a#quant_guests').html("3") 
$('.guest_name_2, .guest_name_3').fadeIn() 
$('.guest_name_4, .guest_name_5, .guest_name_6').hide() 
}); 

$('#guest_num_4').click(function() { 
$('#num_guests a#quant_guests').html("4") 
$('.guest_name_2, .guest_name_3, .guest_name_4').fadeIn() 
$('.guest_name_5, .guest_name_6').hide() 
}); 

$('#guest_num_5').click(function() { 
$('#num_guests a#quant_guests').html("5") 
$('.guest_name_2, .guest_name_3, .guest_name_4, .guest_name_5').fadeIn() 
$('.guest_name_6').hide() 
}); 

$('#guest_num_6').click(function() { 
$('#num_guests a#quant_guests').html("6") 
$('.guest_name_2, .guest_name_3, .guest_name_4, .guest_name_5, .guest_name_6').fadeIn() 
}); 
+0

你听说过关于循环? – mkoryak 2010-04-20 21:12:12

+0

是的,我是这样的初学者,这是我可以放在一起的最好的。看起来它有很多冗余。 – adamwstl 2010-04-20 21:13:37

+0

这也取决于您的HTML代码。我认为,你的标记也可以改进,然后你的JS可以改进。 – 2010-04-20 21:15:26

回答

3
$('.guest_num').click(function() { 
    var n = $(this).attr('href').split('#')[1]; 
    $('#num_guests a#quant_guests').html(n); 
    var curr = $('.guest_name_' + n); 
    curr.prevAll().fadeIn(); 
    curr.fadeIn(); 
    curr.nextAll().hide(); 
    return false; 
}); 

在HTML方面:

<a class="guest_num" href="#1">...</a> 
+1

+1我正在写出非常精确的代码。 :] – 2010-04-20 21:19:35

+0

看起来我是一个更快的typer;)它仍然非常丑陋,虽然... – 2010-04-20 21:20:35

+0

非常感谢你们! – adamwstl 2010-04-20 21:39:08

-1

使用循环和存储这些 “guest_num_1” 并为每eteration改变与循环索引 '1'

相关问题