Как JS из сокращённого вида переписать (8 строк)?

Ребята, помогите в нормальном виде переписать. Меня || с толку сбивают.

var $this = $(this), href
	  , target_id = $this.attr('data-id')
	  , target = $this.attr('data-target')
		|| e.preventDefault()
		|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')
	  , option = $(target).data('collapse') ? 'toggle' : $this.data()
	$this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
	$(target).collapse(option);


так?
var $this = $(this);
var href;
var target_id = $this.attr('data-id');
var target = $this.attr('data-target') || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '');
var option = $(target).data('collapse') ? 'toggle' : $this.data();
var $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed');
var $(target).collapse(option);
  • Вопрос задан
  • 2802 просмотра
Пригласить эксперта
Ответы на вопрос 3
mannaro
@mannaro Куратор тега JavaScript
Умею профессионально гуглить
Так
var $this = $(this);
var href;
var target_id = $this.attr('data-id');
var target = $this.attr('data-target') || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '');
var option = $(target).data('collapse') ? 'toggle' : $this.data();
$this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed');
$(target).collapse(option);
Ответ написан
Комментировать
@lnked
var $this = $(this)
, href
, target_id = $this.attr('data-id')
, target = $this.attr('data-target') || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')
, option = $(target).data('collapse') ? 'toggle' : $this.data() ;

$this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
$(target).collapse(option);


Много раз var писать не нужно
Ответ написан
Комментировать
copist
@copist
Empower people to give
Здесь || используется вместо ;
&& используется вместо if () { }
непонятное усложнение при вызове addClass / removeClass

В общем у меня получилось так
e.preventDefault();
var $this = $(this),
    href = $this.attr('href'),
    target_id = $this.attr('data-id'),
    target = $this.attr('data-target'),
    option = $(target).data('collapse') ? 'toggle' : $this.data();

if (href) { href.replace(/.*(?=#[^\s]+$)/, ''); }

if ($(target).hasClass('in')) {
    $this.addClass('collapsed')
} else {
    $this.removeClass('collapsed')
}

$(target).collapse(option);


А вот процесс получения https://www.dropbox.com/s/jny55205vg2sb6j/toster.r...
Ответ написан
Ваш ответ на вопрос

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

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