@Drumsid

Скрипт jquery можно как то короче записать?

Я думаю тут все понятно...
$(document).ready(function () {
				        $('a#link1').click(function (e) {
				            $(this).toggleClass('active');
				            $('#content1').toggle();
				                
				            e.stopPropagation();
				        });

				        $('#content1').click(function (e) {
				            e.stopPropagation();
				        });

				        $('body').click(function () {
				            var link = $('a#link1');
				            if (link.hasClass('active')) {
				                link.click();
				            }
				        });
				    });

				
				        $('a#link2').click(function (e) {
				            $(this).toggleClass('active');
				            $('#content2').toggle();
				                
				            e.stopPropagation();
				        });

				        $('#content2').click(function (e) {
				            e.stopPropagation();
				        });

				        $('body').click(function () {
				            var link = $('a#link2');
				            if (link.hasClass('active')) {
				                link.click();
				            }
				        });
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
Например, так:
$(document).ready(function () {
	$('a#link1, a#link2').click(function (e) {
		$(this).toggleClass('active');
		if ($(this)[0].id == 'link1') $('#content1').toggle();
		else $('#content2').toggle();
		e.stopPropagation();
	});

	$('#content1, #content2').click(function (e) {
		e.stopPropagation();
	});

	$('body').click(function () {
		var link = $('a#link1');
		if (link.hasClass('active')) {
			link.click();
		}
		var link2 = $('a#link2');
		if (link2.hasClass('active')) {
			link2.click();
		}
	});
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@gribanov2la
Full stack web разработчик
$(document).ready(() => {
  $('a#link1, a#link2').click((e) => {
    $(e.target).toggleClass('active')
    $('#content' + e.target.getAttribute('id')[4]).toggle()
    e.stopPropagation()
  })
  $('#content1, #content2').click(e => e.stopPropagation())
  $('body').click(() => [$('a#link1'), $('a#link2')].forEach($link => $link.hasClass('active') && $link.click()))
})

Максимально коротко, но не уверен что так нужно писать на реальном проекте, всё таки порой читабельность > лаконичность.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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