Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Объясните как работет этот код? (https://javascript.ru/forum/jquery/59100-obyasnite-kak-rabotet-ehtot-kod.html)

lexapiter25 27.10.2015 23:26

Объясните как работет этот код?
 
Объясните мне пожалуйста как работает следующий код
var next = ((current.next().length) ? ((current.next().hasClass('show')) ? $('div#rotator ul li:first') :current.next()) : $('div#rotator ul li:first')); а именно его часть в скобках
Что он делает я зная, но я не понимю как.. То есть что происходит тут (current.next().length) и вот тут ((current.next().hasClass('show')) и тд. И как почитать то что сначала идет условие, потом сразу еще условие...
Воде просмотрел курс "Специалиста" по jquery , вроде все понятно... написал кое что сам, а тут вообще не мгу понять логику...

lexapiter25 27.10.2015 23:46

Вот это не понимаю - "next().length" остальное вроде дошло, когда разобрался со скобками.

рони 27.10.2015 23:56

lexapiter25,
((current.next().length) ? если есть li следующий length = 1 от текущего работаем с ним иначе length = 0 переходим к первому li

рони 27.10.2015 23:58

lexapiter25,
http://javascript.ru/forum/misc/4829...razhenijj.html

Rise 28.10.2015 00:19

lexapiter25, такая логика
if (current.next().length === 1) {
	if (current.next().hasClass('show') === true) {
		var next = $('div#rotator ul li:first');
	} else {
		var next = current.next();
	}
} else {
	var next = $('div#rotator ul li:first');
}

lexapiter25 28.10.2015 01:03

Цитата:

Сообщение от Rise (Сообщение 393325)
lexapiter25, такая логика
if (current.next().length === 1) {
	if (current.next().hasClass('show') === true) {
		var next = $('div#rotator ul li:first');
	} else {
		var next = current.next();
	}
} else {
	var next = $('div#rotator ul li:first');
}

Понял спасибо..осталось вот с этим разобраться
next.css({opacity: 0.0})
.addClass('show')
.animate({opacity: 1.0}, 1000);

// Прячем текущую картинку
current.animate({opacity: 0.0}, 1000)
.removeClass('show');
То есть в какой момент он присваивает класс. Каждому следующему li пока не дойдет до первого? А когда дойдет, то удалит класс у него, что бы заново все началось? Так?
Или он удаляет класс show у li, которому он его только что присвоил, сразу после выполнения анимации?

lexapiter25 28.10.2015 01:05

Это вот кусок по куренту. var current = ($('div#rotator ul li.show')? $('div#rotator ul li.show') : $('div#rotator ul li:first'));

lexapiter25 28.10.2015 01:19

Цитата:

Сообщение от рони (Сообщение 393320)
lexapiter25,
((current.next().length) ? если есть li следующий length = 1 от текущего работаем с ним иначе length = 0 переходим к первому li

То есть в данном случае все li будут иметь lenght=1, пока не дойдут до последнего? А в конце получится, что li больше нет... иии что произойдет? будет возвращено false и переход к первому li? Так я понял?

рони 28.10.2015 01:23

Цитата:

Сообщение от lexapiter25
что произойдет

найдётся первый li -- получилась карусель
http://javascript.ru/forum/jquery/47...tml#post311109

lexapiter25 29.10.2015 01:16

Спасибо всем за ответы разобрался..


Часовой пояс GMT +3, время: 09:51.