Нужна помощь в рефакторинге этого оператора Javascript if / else - PullRequest
1 голос
/ 01 октября 2010

Вот мой текущий оператор if / else:

var current_class = $(this).closest("article").attr("class")

if (current_class == 'opened')
{
  $(this).closest("article").removeClass('opened');
  $(this).closest("article").addClass('closed');
}
else
{
  $(this).closest("article").removeClass('closed');
  $(this).closest("article").addClass('opened');
}

Есть ли более короткий способ написать все это?Просто кажется ... избыточный вес.:)

Ответы [ 4 ]

7 голосов
/ 01 октября 2010

Использование

.toggleClass ()

Вот пример http://api.jquery.com/toggleClass/

2 голосов
/ 01 октября 2010

ИМО, это самое чистое и ясное решение:

var current_class = $(this).closest("article");
if (current_class.hasClass('opened'))
{
  current_class.removeClass('opened').addClass('closed');
}
else
{
  current_class.removeClass('closed').addClass('opened');
}
0 голосов
/ 01 октября 2010
$(this).closest("article").toggleClass('opened').toggleClass('closed');
0 голосов
/ 01 октября 2010

может быть что-то вроде:

var current = $(this).closest('article'); // no need to run the selector over and over
var current_class = current.attr('class');
current.removeClass('opened closed').addClass(current_class=='opened'?'closed':'opened');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...