2016-02-02 4 views
0

Сценарий довольно прост. Я построил функцию, которая принимает строки в качестве аргумента. Затем я добавляю эти строки как классы в тело документа.Javascript Добавить класс Code Efficiency

Теперь эти классы могут измениться. Я хочу удалить старые классы и добавить новые. Я хочу сделать это, не убивая любые существующие классы тела, поэтому: document.body.className = ""; не может быть и речи.

Мое решение прекрасно работает, но, похоже, раздувается. Я думаю, что, возможно, я сконфигурировал код вокруг идеи хранения переменных prev за пределами области действия.

Вот ссылка на JS Fiddle с раствором: https://jsfiddle.net/tgfer9ya/2/

Кто-нибудь есть предложения по всему, как я могу упростить это или сделать его более эффективным?

Спасибо в продвижении.

ответ

0

Как насчет этого?

var currRegion = ""; 
var currLocale = ""; 
var currLang = ""; 

setBodyClasses("AMERICA", "en_US", "en"); 

function setBodyClasses(region, locale, lang) { 
    region = region.toLowerCase(); 
    locale = locale.toLowerCase(); 
    lang = lang.toLowerCase(); 

    if (currRegion !== region) { 
    $("body").removeClass(currRegion).addClass(region); 
    currRegion = region; 
    } 

    if (currLocale !== locale) { 
    $("body").removeClass(currLocale).addClass(locale); 
    currLocale = locale; 
    } 

    if (currLang !== lang) { 
    $("body").removeClass(currLang).addClass(lang); 
    currLang = lang; 
    } 
} 

JSFiddle