这个javascript可以缩短吗?
谁能告诉我缩短这段代码的方法,或者举个例子就好了?数组是最好的方法吗这个javascript可以缩短吗?,javascript,jquery,Javascript,Jquery,谁能告诉我缩短这段代码的方法,或者举个例子就好了?数组是最好的方法吗 $(document).ready(function(){ $("#parent1").css("display","none"); $(".aboveage1").click(function(){ if ($('input[name=age1]:checked').val() == "No" ) { $("#parent1").slideDown("fast"); //Slide Down Eff
$(document).ready(function(){
$("#parent1").css("display","none");
$(".aboveage1").click(function(){
if ($('input[name=age1]:checked').val() == "No" ) {
$("#parent1").slideDown("fast"); //Slide Down Effect
} else {
$("#parent1").slideUp("fast"); //Slide Up Effect
}
});
});
$(document).ready(function(){
$("#parent2").css("display","none");
$(".aboveage2").click(function(){
if ($('input[name=age2]:checked').val() == "No" ) {
$("#parent2").slideDown("fast"); //Slide Down Effect
} else {
$("#parent2").slideUp("fast"); //Slide Up Effect
}
});
});
$(document).ready(function(){
$("#parent3").css("display","none");
$(".aboveage3").click(function(){
if ($('input[name=age3]:checked').val() == "No" ) {
$("#parent3").slideDown("fast"); //Slide Down Effect
} else {
$("#parent3").slideUp("fast"); //Slide Up Effect
}
});
});
你应该重写你的HTML和CSS更加枯燥。因此,JavaScript不需要注册相同处理程序代码的3倍;-) 您可以使用for循环
for(var i = 1; i < 4; i++) {
$("#parent"+string(i)).css("display","none");
$(".aboveage"+string(i)).click(function(){
if ($('input[name=age'+string(i)+']:checked').val() == "No" ) {
$("#parent"+string(i)).slideDown("fast"); //Slide Down Effect
} else {
$("#parent"+string(i)).slideUp("fast"); //Slide Up Effect
}
});
}
for(变量i=1;i<4;i++){
$(“#父项”+字符串(i)).css(“显示”、“无”);
$(“.overage”+字符串(i))。单击(函数(){
if($('input[name=age'+string(i)+']:checked')。val()=“No”){
$(“#父项”+字符串(i)).slideDown(“快速”);//向下滑动效果
}否则{
$(“#父项”+字符串(i)).slideUp(“快速”);//向上滑动效果
}
});
}
以下是我为编写可读、优雅、简洁的代码而遵循的一些原则:
- 将数据与代码逻辑分开,这样您就只有一次逻辑了。它可以对不同的数据进行操作。这主要意味着,如果你必须修改它,你只需要在一个地方修改它,你不会忘记修改其他地方
- 将样式的初始状态放在css中,如果需要更改,则使用javascript触摸它
- 不要只给你的3个元素一个唯一的类,而是给他们一个描述他们共同行为的类,比如“可滑动”和同样的复选框:“年龄复选框”。现在,您可以使用jquery找到它们,而不必单独引用它们
- 确保您的代码格式与您的语义结构一致(有助于可读性)
- 避免匿名内联函数。参数列表中的内联函数会模糊代码的结构。如果你真的必须这样做,至少给他们一个名字,这样他们就不会在调试和分析时显示为“匿名函数”
.slidable
{
display: none;
}
<form ...>
<div id="#parent1" class="slidable">
<div class="aboveage1 slidebutton"></div>
<input class="age-checkbox" type="checkbox" name="age1" />
</div>
</form>
$( document ).ready( function documentReady()
{
$( ".slidebutton" ).each( attachSlide );
function attachSlide()
{
$( this ).click( slide );
}
function slide( event )
{
var cb = $( event.target ).parent().children( '.age-checkbox' );
if( cb.val() == "No" )
cb.parent().slideDown( "fast" ); //Slide Down Effect
else
cb.parent().slideUp( "fast" ); //Slide Up Effect
}
});
。可滑动
{
显示:无;
}
$(document).ready(函数documentReady()
{
$(“.slidebutton”)。每个(附件滑块);
函数attachSlide()
{
$(此)。单击(幻灯片);
}
功能幻灯片(活动)
{
var cb=$(event.target).parent().children('.age复选框');
如果(cb.val()=“否”)
cb.parent().slideDown(“fast”);//向下滑动效果
其他的
cb.parent().slideUp(“fast”);//向上滑动效果
}
});
欢迎使用堆栈溢出!这个问题可能需要做一些工作。代码应该做什么?如果代码有错误,请描述它。如果代码有效但需要改进,那么问题就出在这里,而不是这里。在这种情况下,您可以标记您的帖子以引起版主的注意,并要求将其迁移。祝你好运看起来一些基本的CSS可能有用…或者您可以使用for循环。请迁移到代码审阅而不是向下投票。。。我们都曾经是初学者;)>@LishaNicole虽然您也可以定义一些返回处理程序的函数,并使用for循环对其进行循环和设置,但Thomas的想法更好。