DimaShved
@DimaShved
Web designer

Как грамотно оформить данный JS код?

$(document).ready(function() {
	
	$('.tab').click(function(){

	    var tabs = $(this).closest('.tabs');

	    // Удаляем классы active
	    $(this).siblings().removeClass('active');
	    tabs.children('.tabs-content').children('.tabs-content-item').removeClass('active');

	    // Добавляем классы active
	    $(this).addClass('active');
	    tabs.children('.tabs-content').children('.tabs-content-item').eq($(this).index()).addClass('active');
	})
	
});

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

Вот пример на codepen
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
FFxSquall
@FFxSquall
Могу писать код, могу не писать
Как-то так
$(function() {
    $('.tab').on('click', function(e) {
        var $el = $(e.currentTarget);
        var $tabs = $el.closest('.tabs');
        var $content = $tabs.children('.tabs-content').children('.tabs-content-item');
        // Удаляем классы active
        $el.siblings().removeClass('active');
        $content.removeClass('active');

        // Добавляем классы active
        $el.addClass('active');
        $content.eq($el.index()).addClass('active');
    })

});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@TobiraSoe
$(document).ready(function() {
  
  $('.tab').click(function(){

      var tabs = $(this).closest('.tabs');

      // Удаляем классы active
      $(this).siblings()
         .removeClass('active');
      tabs.children('.tabs-content')
         .children('.tabs-content-item')
         .removeClass('active');

      // Добавляем классы active
      $(this).addClass('active');
      tabs.children('.tabs-content')
         .children('.tabs-content-item')
         .eq($(this)
         .index())
         .addClass('active');
  })
  
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы