2012-02-14 130 views
0

我写了一个小的jquery代码,但它看起来非常多余和幼稚。任何人都可以帮助缩短它或使效率更高?jquery代码缩短

下面的代码:

// DIM The Light Effect 
    var dimlight = $(".dimlight"), 
    showlight = $(".showlight"), 
    overlay = $("#overlay") 
    playerlive = $("#player_live"), 
    lightswitch = $(".light_switch") 

     playerlive.mouseover(function(){ 

     lightswitch.show(); 
     }); 

     playerlive.mouseout(function(){ 

     lightswitch.hide(); 
     }); 

     dimlight.click(function(){ 

     overlay.fadeIn(); 
     dimlight.hide(); 
     showlight.show(); 
     }); 

     showlight.click(function(){ 
     overlay.fadeOut(); 
     dimlight.show(); 
     showlight.hide(); 
     }); 

     showlight.click(function(){ 
     overlay.fadeOut(); 
     dimlight.show(); 
     showlight.hide(); 
     }); 

THX很多已

+0

你有'showlight.click(...)'两次... – 2012-02-14 11:15:28

回答

0

为什么你不只是做:

$('.dimlight, .showlight').click(function(){ 
    if ($(this).hasClass('dimlight')) { 
     overlay.fadeIn(); 
     dimlight.hide(); 
     showlight.show(); 
    } else { 
     overlay.fadeOut(); 
     dimlight.show(); 
     showlight.hide(); 
    } 
    }); 
+0

有一次是'dimlight.show();',另一次'dimlight.hide();' – 2012-02-14 11:16:01

+0

@FelixKling已经改变它 – PeeHaa 2012-02-14 11:17:24

+0

完美地工作。 Thx一堆。 – user546585 2012-02-14 11:22:12

1

你可以重写如下整个代码:

$("#player_live").hover(function(){ 
    $(".light_switch").toggle(); 
}); 

var elems = $('.dimlight, .showlight'); 
elems.click(function(){ 
    elems.toggle(); 
    $("#overlay").fadeToggle(); 
}); 
+0

为什么不''(“。light_switch”)。toggle()'? – 2012-02-14 11:31:16

+0

ofcourse可以做,但因为这是在mouseover和mouseout,2不同的功能,使用show hide将避免混淆。 – 2012-02-14 11:33:20

+0

我的意思是'$(“#player_live”)。hover(function(){$(“。light_switch”)。toggle();});' - 参见[here](http://jsfiddle.net/TVULe/ ) – 2012-02-14 11:36:29