@svilkov87

Как избежать дублирования кода?

Всем привет.

Есть кусочек кода:
$tabsTariff.each( function() {

        if ( $( this ).hasClass('b-tabs__item-title_state_current') ) {

            $linkPopup.attr( 'href', '#b-popup-classic-' + $( this ).attr('data-tab-name') ); 
        }

        $( this ).on( 'click', function() {

            $linkPopup.attr( 'href', '#b-popup-classic-' + $( this ).attr('data-tab-name') ); // дубль

        } );

    } );


Какие есть возможности избежать дублирования
$linkPopup.attr( 'href', '#b-popup-classic-' + $( this ).attr('data-tab-name') );
, при том, что мне нужно оставить как цикл each, так и событие click?

Спасибо.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
OKyJIucT
@OKyJIucT
Sunshine reggae
Вынесите повторяющиеся части кода в функции с параметрами, и вызывайте их при необходимости. например, в такую

function setHref(item, href) {
    item.attr('href', href); 
}

$tabsTariff.each( function() {

    var href = '#b-popup-classic-' + $( this ).attr('data-tab-name');

    if ( $( this ).hasClass('b-tabs__item-title_state_current') ) {

        setHref($linkPopup, href); 
    }

    $( this ).on( 'click', function() {

        setHref($linkPopup, href); // дубль

    } );

 } );


В данном примере экономия не существенная, но суть вы уловили.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы