2013-03-26 3 views
0

У меня есть $ (this) .css() много в моем коде ... im new для JS, поэтому я не уверен, что лучший способ удалить это дублирование и сделать мой код чистый ...Как я могу избавиться от дублирования в этом коде

вот ссылка на мою скрипку http://jsfiddle.net/d0okie0612/7Y2Qp/

$(".btn-pvPanels").on('click', function(event) { 
    var selected; 
    selected = $(this).val(); 
    if(selected === "on-panel") { 
    $(this).css({ 
    'background': 'orange', 
    'color': 'white' 
    }); 
    $(this).parent().find('.btn-off').css({ 
    'background': '#F1F1F1', 
    'color': '#8E8D8D' 
    }); 
    $('.aon_poff').fadeIn('slow'); 
    } 

else if(selected === "off-panel") { 
    $(this).css({ 
    'background': 'orange', 
    'color': 'white' 
    }); 
    $(this).parent().find('.btn-on').css({ 
    'background': '#F1F1F1', 
    'color': '#8E8D8D' 
    }); 
    $('.aon_poff').fadeOut('slow'); 
    } 

else if(selected === "on-accessories") { 
    $(this).css({ 
    'background': 'orange', 
    'color': 'white' 
    }); 
    $(this).parent().find('.btn-on').css({ 
    'background': '#F1F1F1', 
    'color': '#8E8D8D' 
    }); 

    } 

else if(selected === "on-accessories" && "on-panel") { 
    $(this).css({ 
    'background': 'orange', 
    'color': 'white' 
    }); 
    $(this).parent().find('.btn-on').css({ 
    'background': '#F1F1F1', 
    'color': '#8E8D8D' 
    }); 
    alert('hey') 
    } 

}); 


    $(".btn-accessories").on('click', function(event) { 
var selected; 
selected = $(this).val(); 
if(selected === "on-accessories") { 
    $(this).css({ 
    'background': 'orange', 
    'color': 'white' 
    }); 
    $(this).parent().find('.btn-off').css({ 
    'background': '#F1F1F1', 
    'color': '#8E8D8D' 
    }); 
    $('.aoff_pon').fadeIn('slow'); 
    } 

else if(selected === "off-accessories") { 
    $(this).css({ 
    'background': 'orange', 
    'color': 'white' 
    }); 
    $(this).parent().find('.btn-on').css({ 
    'background': '#F1F1F1', 
    'color': '#8E8D8D' 
    }); 
    $('.aoff_pon').fadeOut('slow'); 
    } 



}); 
+5

Простейший способ заключается в перемещении этих свойств в классы CSS и при необходимости используйте addClass()/removeClass(). – Derek

+0

Добавление некоторых или утверждений может помочь – Spooks

+0

Почему вы снова и снова назначаете одни и те же стили CSS? Кажется, он нигде не меняется. – Bergi

ответ

4

имена классов Использование CSS в стиле:

.selected { 
    background-color: orange; 
    color: white; 
} 
.deselected { 
    background-color: #F1F1F1; 
    color: #8E8D8D; 
} 

Теперь вместо установки .css() вы можете использовать:

addClass('selected') и removeClass('selected') для оранжевого фона.

addClass('deselected') и removeClasS('deselected') для серого фона.

+0

поэтому, когда я нажимаю кнопку «Вкл.», Цвет меняется правильно, но когда я снова нажимаю «ВЫКЛ», цвет не меняется. Http://jsfiddle.net/d0okie0612/7Y2Qp/ – user1502223

+0

@ user1502223 Вы должны удалить класс «selected», когда вы добавляете 'deselected' класс. Кроме того, вы должны быть уверены, что не вызываете '.css()' в любом месте, потому что значения, которые вы используете там, будут переопределять значения в классах CSS. – Xymostech

+0

ОК сладкий я получил его работать сейчас спасибо! – user1502223

Смежные вопросы