如何在Jquery中减少这一行?

时间:2014-06-03 09:40:30

标签: javascript jquery

我有这么多行代码以及如何减少这些行。还请解释你的代码。如果有任何简单的方法来编写这样的逻辑代码请发布链接。

$(function () {
  $("#menu1").click(function () {
    $(this).css({"background-color": "rgba(255, 255, 255, 0.4)"});
    $("#menu2").css({"background-color": "transparent"});
    $("#menu3").css({"background-color": "transparent"});
    $("#menu4").css({"background-color": "transparent"});
    $("#menu5").css({"background-color": "transparent"});
  });

  $("#menu2").click(function () {
    $(this).css({"background-color": "rgba(255, 255, 255, 0.4)"});
    $("#menu1").css({"background-color": "transparent"});
    $("#menu3").css({"background-color": "transparent"});
    $("#menu4").css({"background-color": "transparent"});
    $("#menu5").css({"background-color": "transparent"});
  });

  $("#menu3").click(function () {
    $(this).css({"background-color": "rgba(255, 255, 255, 0.4)"});
    $("#menu1").css({"background-color": "transparent"});
    $("#menu2").css({"background-color": "transparent"});
    $("#menu4").css({"background-color": "transparent"});
    $("#menu5").css({"background-color": "transparent"});
  });
});

2 个答案:

答案 0 :(得分:5)

使用jquery Attribute starts with selector.not()。试试这个:

$(function(){
     $("[id^=menu]").click(function(){
          $(this).css({"background-color":"rgba(255, 255, 255, 0.4)"});
          $("[id^=menu]").not(this).css({"background-color":"transparent"});   
     });            
});

答案 1 :(得分:4)

为所有菜单提供一个共同的类并执行此操作

$('.menu').on('click',function(){
    $('.menu').css({"background-color":"transparent"});
    $(this).css({"background-color":"rgba(255, 255, 255, 0.4)"});
});