Перелистывание изображений
Добра!
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'));
Я хотел бы попросить подробно описать данный код. Я знаю что он высчитывает текущее изображение и следующее. Знаю что двоеточие это фильтр, но все равно не могу понять суть. Может кто нибудь может подробно описать, просто хочу сделать чтобы еще можно было перелистывать картинки и назад, а чтоб это сделать нужно вникнуть в этот код и по сделать по подобию. Заранее спасибо! |
Вот этот код без тернарных операторов:
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, так куда более понятно. На основе вашего кода я смог написать перелистывание предыдущей картинки:
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 ) {
т.к. в текущем варианте оно абсолютно бессмысленно т.к. всегда истинно. |
скорее всего оно верно, я думаю там подразумевается если вдруг не будет класса show, то оно присвоит этот класс первому элементу.
|
Цитата:
if ( $('div#rotator ul li.show') )
Это будет всегда истинным т.к. $('div#rotator ul li.show') создает объект jQuery независимо от того будут найдены элементы удовлетворяющие селектору или нет. А объект при логическом преобразовании всегда дает true. А вот если сделать так:
if ( $('div#rotator ul li.show').length )
то это условие будет выполнено только если будет найден хоть один элемент удовлетворяющий селекторы (элемент списка с классом show). |
dulingleb,
а чем код в 3 посте неподошёл там и вперед и назад хоть залистайся |
Цитата:
|
| Часовой пояс GMT +3, время: 03:05. |