Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.06.2014, 12:52
Новичок на форуме
Отправить личное сообщение для dulingleb Посмотреть профиль Найти все сообщения от dulingleb
 
Регистрация: 28.06.2014
Сообщений: 6

Перелистывание изображений
Добра!

var current = ($('div#rotator ul li.show') ?  $('div#rotator ul li.show') : $('div#rotator ul li:first'));	 
	var next = ((current.next().length) ? ((current.next().hasClass('show')) ? $('div#rotator ul li:first') : current.next()) : $('div#rotator ul li:first'));


Я хотел бы попросить подробно описать данный код. Я знаю что он высчитывает текущее изображение и следующее. Знаю что двоеточие это фильтр, но все равно не могу понять суть. Может кто нибудь может подробно описать, просто хочу сделать чтобы еще можно было перелистывать картинки и назад, а чтоб это сделать нужно вникнуть в этот код и по сделать по подобию.

Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 28.06.2014, 14:08
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Вот этот код без тернарных операторов:
var current;
if ( $('div#rotator ul li.show') ) {
  current = $('div#rotator ul li.show');
} else {
  current = $('div#rotator ul li:first'));
}

var next;
if ( current.next().length ) {
  if ( current.next().hasClass('show') ) {
    next = $('div#rotator ul li:first');
  } else {
    next = current.next();
  }
} else {
  next = $('div#rotator ul li:first');
}

Вроде всё и так очевидно. Хотя первое условия весьма странное, ибо всегда будет выполняться... Возможно там length забыли.

Последний раз редактировалось jsnb, 28.06.2014 в 14:14.
Ответить с цитированием
  #3 (permalink)  
Старый 28.06.2014, 15:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

dulingleb,
Скрывать все P, кроме текущего
Ответить с цитированием
  #4 (permalink)  
Старый 28.06.2014, 15:31
Новичок на форуме
Отправить личное сообщение для dulingleb Посмотреть профиль Найти все сообщения от dulingleb
 
Регистрация: 28.06.2014
Сообщений: 6

Спасибо jsnb, так куда более понятно. На основе вашего кода я смог написать перелистывание предыдущей картинки:

var current;
	if ( $('div#rotator ul li.show') ) {
	  current = $('div#rotator ul li.show');
	} else {
	  current = $('div#rotator ul li:first');
	}
	
	var prev;
	if ( current.index() != 0) {
		prev = current.prev("li");  
	} else {
		prev = $('div#rotator ul li:last');
	}
Ответить с цитированием
  #5 (permalink)  
Старый 28.06.2014, 15:51
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от dulingleb Посмотреть сообщение
Спасибо jsnb, так куда более понятно. На основе вашего кода я смог написать перелистывание предыдущей картинки:

var current;
	if ( $('div#rotator ul li.show') ) {
	  current = $('div#rotator ul li.show');
	} else {
	  current = $('div#rotator ul li:first');
	}
	
	var prev;
	if ( current.index() != 0) {
		prev = current.prev("li");  
	} else {
		prev = $('div#rotator ul li:last');
	}
Всё-таки мне кажется, что первое условие должно было выглядеть так:
if ( $('div#rotator ul li.show').length ) {

т.к. в текущем варианте оно абсолютно бессмысленно т.к. всегда истинно.

Последний раз редактировалось jsnb, 28.06.2014 в 15:53.
Ответить с цитированием
  #6 (permalink)  
Старый 28.06.2014, 15:58
Новичок на форуме
Отправить личное сообщение для dulingleb Посмотреть профиль Найти все сообщения от dulingleb
 
Регистрация: 28.06.2014
Сообщений: 6

скорее всего оно верно, я думаю там подразумевается если вдруг не будет класса show, то оно присвоит этот класс первому элементу.
Ответить с цитированием
  #7 (permalink)  
Старый 28.06.2014, 16:03
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от dulingleb Посмотреть сообщение
скорее всего оно верно, я думаю там подразумевается если вдруг не будет класса show, то оно присвоит этот класс первому элементу.
if ( $('div#rotator ul li.show') )

Это будет всегда истинным т.к. $('div#rotator ul li.show') создает объект jQuery независимо от того будут найдены элементы удовлетворяющие селектору или нет. А объект при логическом преобразовании всегда дает true.
А вот если сделать так:
if ( $('div#rotator ul li.show').length )

то это условие будет выполнено только если будет найден хоть один элемент удовлетворяющий селекторы (элемент списка с классом show).
Ответить с цитированием
  #8 (permalink)  
Старый 28.06.2014, 16:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

dulingleb,
а чем код в 3 посте неподошёл там и вперед и назад хоть залистайся
Ответить с цитированием
  #9 (permalink)  
Старый 28.06.2014, 23:02
Новичок на форуме
Отправить личное сообщение для dulingleb Посмотреть профиль Найти все сообщения от dulingleb
 
Регистрация: 28.06.2014
Сообщений: 6

Сообщение от jsnb Посмотреть сообщение
if ( $('div#rotator ul li.show') )

Это будет всегда истинным т.к. $('div#rotator ul li.show') создает объект jQuery независимо от того будут найдены элементы удовлетворяющие селектору или нет. А объект при логическом преобразовании всегда дает true.
А вот если сделать так:
if ( $('div#rotator ul li.show').length )

то это условие будет выполнено только если будет найден хоть один элемент удовлетворяющий селекторы (элемент списка с классом show).
а, ну теперь понятно, буду знать, я просто js уже как 3 день учу, по этому еще в нем не очень так
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задержка загрузки фоновых изображений FanAizu (X)HTML/CSS 4 26.07.2013 21:42
jquery-gp-gallery.js - разное отображение подгружаемых изображений frutality jQuery 1 09.09.2012 18:15
Повременная смена изображений jozev Элементы интерфейса 2 01.08.2011 18:43
Прокрутка изображений gen552 Элементы интерфейса 6 01.04.2011 13:11
Скролл мини изображений I-Trap Элементы интерфейса 1 25.11.2009 22:03