Настроить прокрутку топиков (решено)

Делаю сайт с топиками в три столбика. Листая топики, приходится нажимать по три раза, чтобы переключиться на следующую строку с тремя топиками. В связи с этим возникла необходимость, сделать прокрутку не к следующему топику, а через два — то есть к следующей строке с тремя топиками. Если кто не понял, речь идет от toolbar.

Пробовал методом тыка поменять некоторые значения с 1 до 3, но не нашел решения.

Вот содержание toolbar.js чтобы было проще помочь:

var ls = ls || {};
ls.toolbar = ls.toolbar || {};

/**
 * Функционал тул-бара (плавающая пимпа) списка топиков
 */
ls.toolbar.topic = (function ($) {

	this.iCurrentTopic=-1;

	this.init = function() {
		var vars = [], hash;
		var hashes = window.location.hash.replace('#','').split('&');
		for(var i = 0; i < hashes.length; i++) {
			hash = hashes[i].split('=');
			vars.push(hash[0]);
			vars[hash[0]] = hash[1];
		}

		if (vars.goTopic!==undefined) {
			if (vars.goTopic=='last') {
				this.iCurrentTopic=$('.js-topic').length-2;
			} else {
				this.iCurrentTopic=parseInt(vars.goTopic)-1;
			}
			this.goNext();
		}
	};

	this.reset = function() {
		this.iCurrentTopic=-1;
	};

	/**
	 * Прокрутка следующему топику
	 */
	this.goNext = function() {
		this.iCurrentTopic++;
		var topic=$('.js-topic:eq('+this.iCurrentTopic+')');
		if (topic.length) {
			$.scrollTo(topic, 500);
		} else {
			this.iCurrentTopic=$('.js-topic').length-1;
			// переход на следующую страницу
			var page=$('.js-paging-next-page');
			if (page.length && page.attr('href')) {
				window.location=page.attr('href')+'#goTopic=0';
			}
		}

		return false;
	};

	/**
	 * Прокрутка предыдущему топику
	 */
	this.goPrev = function() {
		this.iCurrentTopic--;
		if (this.iCurrentTopic<0) {
			this.iCurrentTopic=0;
			// на предыдущую страницу
			var page=$('.js-paging-prev-page');
			if (page.length && page.attr('href')) {
				window.location=page.attr('href')+'#goTopic=last';
			}
		} else {
			var topic=$('.js-topic:eq('+this.iCurrentTopic+')');
			if (topic.length) {
				$.scrollTo(topic, 500);
			}
		}
		return false;
	};

	return this;
}).call(ls.toolbar.topic || {},jQuery);

/**
 * Функционал кнопки "UP"
 */
ls.toolbar.up = (function ($) {

	this.init = function() {
		$(window).scroll(function(){
			if ($(window).scrollTop() > $(window).height() / 2) {
				$('#toolbar_scrollup').fadeIn(500);
			} else {
				$('#toolbar_scrollup').fadeOut(500);
			}
		});
	};

	this.goUp = function() {
		ls.toolbar.topic.reset();
		$.scrollTo(0, 500);
		return false;
	};

	return this;
}).call(ls.toolbar.up || {},jQuery);


Решение от пользователя rsmike

livestreet.ru/blog/11285.html#comment174186

Пример работы можно посмотреть тут: neasa.ru

12 комментариев

avatar
Ап. Может кто помочь?
avatar
три столбика это я понимаю типа сетка? ну аля Synio Flow?
avatar
Да. Вот линк: neasa.ru
avatar
/**
         * Прокрутка следующему топику
         */
        this.goNext = function() {
                this.iCurrentTopic+=2;


кнопку предыдущего — самостоятельно
avatar
Спасибо огробное. Работает. Сейчас обновлю топик.
avatar
сейчас прибавляется по 2, поэтому на трех колонках через раз прокрутка будет оставаться на месте.

this.iCurrentTopic += (this.iCurrentTopic > 4)? 2: 3;
avatar
Да, есть такой недочёт…
У вас нет ошибки? Работает так же как и:
this.iCurrentTopic+=2;
avatar
тьфу, наоборот

3: 2
avatar
Теперь всё классно работает. Большое спасибо за помощь!
avatar
что то я так и не понял, где решение? ) конкретику пожалуйста, а то не ясно, где 3=2, где 3:2.
avatar
Возник следующий вопрос — как можно сделать, чтобы прокрутка была не прям до топика, а, допустим, -30px до топика?
Сделал плавающий топ-бар, и когда нажимаю на «след» или «пред» топик, то этот топ-бар закрывает начало топика…
avatar
С комментами такая же беда. Кто-то сталкивался с такой проблемой вообще? Или топ-бары никто не прикручивал себе?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.