У меня настроен JQuery JCarousel в виде CAKEPHP. Это конкретное представление имеет цикл foreach для сбора серии миниатюр и заголовков из базы данных. Если вы щелкаете страницу, она возвращает другую страницу с увеличенным описанием и описанием фрагмента.
Итак, я перезагружаю JCarousel на второй странице с начальной позицией элемента, нажатой на предыдущей странице. Я посылаю кликнувший идентификатор в строку запроса «? N = id #» и извлекаю его с помощью javascript, присваиваю его переменной, а затем моей функции JCarousel. Это прекрасно работает, но проблема в том, что когда я делаю это, JCarousel добавляет пустое пространство перед первым элементом Карусели. Также, в идеале, я бы хотел, чтобы элемент Карусели, на который нажали, был в том же положении, что и на предыдущей странице. Весь мой блок карусели - 8 на страницу и различается по размеру. Поэтому, если я нажму следующую кнопку и затем пункт 10, я бы хотел начать с появления следующего нажатия кнопки и показать пункт 10 во втором месте. Я также играл со смещением и немного математики, но ничего не работает. Я надеюсь, что это имеет смысл, так как это сводит меня с ума. :)
Вот мой код:
PHP страница
<div id="wrap">
<ul id="mycarousel" class="jcarousel-skin-tango">
<?php $i=1; $cnt=1; ?>
<?php foreach($all_works as $work): ?>
<li class="clicked" id="<?php echo $cnt++; ?>">
<a href="../../<?php echo $work['Work']['id'].DS.$work['Work']['category_id'].DS.$work['Work']['artist_id']; ?>?n=<?php echo $i++; ?>">
<?php echo $html->image('$image'.urlencode($work['Work']['picture']), array('border' => '0')); ?><span><?php echo $work['Work']['name']; ?></span></a>
</li>
<?php endforeach; ?>
</ul><span><?php echo $cnt; ?> pieces shown</span></div>
Javascript для получения URL и JCarousel:
$.extend({ getUrlVars: function()
{var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];}
return vars;},
getUrlVar: function(name)
{
return $.getUrlVars()[name]; }});
var byName = $.getUrlVar('n');
jQuery(document).ready(function() {
jQuery('#mycarousel').jcarousel({
scroll: 8,
start: byName
});
});
извините за форматирование, первое размещение в стеке.