代码之家  ›  专栏  ›  技术社区  ›  Shpigford

需要帮助重构这个Javascript if/else语句吗

  •  1
  • Shpigford  · 技术社区  · 14 年前

    以下是我当前的if/else语句:

    var current_class = $(this).closest("article").attr("class")
    
    if (current_class == 'opened')
    {
      $(this).closest("article").removeClass('opened');
      $(this).closest("article").addClass('closed');
    }
    else
    {
      $(this).closest("article").removeClass('closed');
      $(this).closest("article").addClass('opened');
    }
    

    有没有一个更简短的方法来写这些?只是看起来…超重。:)

    4 回复  |  直到 14 年前
        1
  •  6
  •   mx0 aleclara95    14 年前
        2
  •  2
  •   Dan    14 年前

    IMO这是最干净、最清晰的解决方案:

    var current_class = $(this).closest("article");
    if (current_class.hasClass('opened'))
    {
      current_class.removeClass('opened').addClass('closed');
    }
    else
    {
      current_class.removeClass('closed').addClass('opened');
    }
    
        3
  •  0
  •   user462356 user462356    14 年前

    var current = $(this).closest('article'); // no need to run the selector over and over
    var current_class = current.attr('class');
    current.removeClass('opened closed').addClass(current_class=='opened'?'closed':'opened');
    
        4
  •  0
  •   pwb44    14 年前
    $(this).closest("article").toggleClass('opened').toggleClass('closed');