@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); // дубль

    } );

 } );


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

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

Войти через центр авторизации
Похожие вопросы
16 мая 2024, в 23:36
200000 руб./за проект
16 мая 2024, в 23:10
12000 руб./за проект