Foxocsj
@Foxocsj
учусь htmlf

Как воспользоваться callback для обработчика?

У меня есть код

$('.photo').click(function(){
    $('.photo').removeClass('active-element');
    $(this).addClass('active-element');
    $('.point li').removeClass('active-point').
    filter((index, item) => $(this).data('id') == $(item).data('id')).addClass('active-point');
    $('.about-text p').text($(this).data('text'));
    $('.about-site p').text($(this).data('info'));
    $('.about-site a').text($(this).data('website')).attr("href", "#");
});

$('.point li').click(function(){
    $('.point li').removeClass('active-point');
    $(this).addClass('active-point');
});


Я хочу во втором обработчике при нажатии кнопки, у меня выполнялись такие же действия.
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
function handleClick() {
    $('.photo').removeClass('active-element');
    $(this).addClass('active-element');
    $('.point li').removeClass('active-point').
    filter((index, item) => $(this).data('id') == $(item).data('id')).addClass('active-point');
    $('.about-text p').text($(this).data('text'));
    $('.about-site p').text($(this).data('info'));
    $('.about-site a').text($(this).data('website')).attr("href", "#");
}

$('.photo').click(handleClick);
$('.point li').click(function() {
    $('.point li').removeClass('active-point');
    $(this).addClass('active-point');
    handleClick.call(this)
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
fl4r3
@fl4r3
Кино, вино и домино
Что-то типа такого?

function handleClickOnPhoto($photo){
    $('.photo').removeClass('active-element');
    $photo.addClass('active-element');
    $('.point li').removeClass('active-point').
    filter((index, item) => $photo.data('id') == $(item).data('id')).addClass('active-point');
    $('.about-text p').text($photo.data('text'));
    $('.about-site p').text($photo.data('info'));
    $('.about-site a').text($photo.data('website')).attr("href", "#");
}

$('.photo').click(function(){
    handleClickOnPhoto($(this));
});

$('.point li').click(function(){
    $('.point li').removeClass('active-point');
    $(this).addClass('active-point');
    handleClickOnPhoto($(this));
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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