Javascript.RU

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

Скрипт отказывается работать в последней версии jQuery
Здравствуйте!
подскажите как поправить, имеем карусель, вот кусок кода
// navigation events
if( $p_nav.length ) {
	$p_nav.bind('click.gridnav', function( e ) {
		if( $wrapper.data( 'anim' ) ) return false;
		$wrapper.data( 'anim', true );
		nav[settings.type.mode].pagination( $wrapper, -1, settings );
		return false;
	});
}
if( $n_nav.length ) {
	$n_nav.bind('click.gridnav', function( e ) {
		if( $wrapper.data( 'anim' ) ) return false;
		$wrapper.data( 'anim', true );
		nav[settings.type.mode].pagination( $wrapper, 1, settings );
		return false;
	});
}


на старых версиях jquery (1.6-1.8.1) все работает как часы, а только подключаешь версию 1.11.1 то перестают работать кнопки вперед назад, выдает вот такую ошибку:
Uncaught Error: Syntax error, unrecognized expression: .tj_row_1
и скрипт не срабатывает.
помогите разобраться!

полный код можно посмотреть тут
Ответить с цитированием
  #2 (permalink)  
Старый 06.10.2014, 08:56
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Вероятно ошибка в этом - 'click.gridnav'
http://api.jquery.com/bind/
Ответить с цитированием
  #3 (permalink)  
Старый 06.10.2014, 09:58
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

krasovsky, зачем искать где-то в другом месте ошибку, если сама ошибка сообщает в чем проблема:
Цитата:
Uncaught Error: Syntax error, unrecognized expression: .tj_row_1,.tj_row_2,
И ведь правда, это некорректный css-селектор, из-за запятой на конце.

В коде есть такой фрагмент:
var currentRows	= '', nextRows = '';
					for( var i = 0; i < opts.rows; ++i ) {
						currentRows += '.tj_row_' + (config.currentRow + i) + ',';


Так вот, это неправильный подход. Надо складывать все в массив, а потом соединить его запятой: array.join(',')
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 06.10.2014, 22:17
Интересующийся
Отправить личное сообщение для Fedul Посмотреть профиль Найти все сообщения от Fedul
 
Регистрация: 05.10.2014
Сообщений: 20

а можно чуть подробнее как все это воплотить?
Ответить с цитированием
  #5 (permalink)  
Старый 07.10.2014, 09:36
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

На примере этих двух строчек:
var currentRows = [], nextRows = '';
for( var i = 0; i < opts.rows; ++i ) {
    currentRows.push('.tj_row_' + (config.currentRow + i));
...

Потом, currentRows = currentRows.join(',')
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 07.10.2014, 19:26
Интересующийся
Отправить личное сообщение для Fedul Посмотреть профиль Найти все сообщения от Fedul
 
Регистрация: 05.10.2014
Сообщений: 20

danik.js спасибо!
все получилось
Ответить с цитированием
  #7 (permalink)  
Старый 02.11.2014, 16:05
Интересующийся
Отправить личное сообщение для Fedul Посмотреть профиль Найти все сообщения от Fedul
 
Регистрация: 05.10.2014
Сообщений: 20

помогите разобраться до конца, скрипт прекрасно работает но ровно до того момента, пока не пытаешься вывести содержимое в два ряда
methods = {
	init 	: function( options ) {
	if( this.length ) {
		var settings = {
			rows	: 2,

код, прекрасно работающий при rows : 1, то есть передается нужное значение от первого массива ко второму, а необходимо передать от первого и второго ко второму и третьему
var currentRows = [], nextRows = '';
	for( var i = 0; i < opts.rows; ++i ) {
		currentRows.push('.tj_row_' + (config.currentRow + i));
		currentRows = currentRows.join(',');
						
		(dir === 1)
		? nextRows	+= '.tj_row_' + (config.currentRow + opts.rows + i) + ''
		: nextRows	+= '.tj_row_' + (config.currentRow - 1 - i) + '';
}

перестает работать, выдавая ошибку
Uncaught TypeError: undefined is not a function

и указывает на
currentRows.push('.tj_row_' + (config.currentRow + i));

как можно это поправить, подскажите?
Ответить с цитированием
  #8 (permalink)  
Старый 03.11.2014, 06:34
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Fedul
currentRows = currentRows.join(',');
Вот здесь в currentRows уже записывается строка, сформированная функцией join. На следующей итерации цикла возникает ошибка, ибо у строки нет метода push
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 03.11.2014, 09:07
Интересующийся
Отправить личное сообщение для Fedul Посмотреть профиль Найти все сообщения от Fedul
 
Регистрация: 05.10.2014
Сообщений: 20

в теории понимаю, но вот с воплощением в жизнь уже второй день ни как..
помогите еще раз пожалуйста
Ответить с цитированием
  #10 (permalink)  
Старый 07.11.2014, 19:10
Интересующийся
Отправить личное сообщение для Fedul Посмотреть профиль Найти все сообщения от Fedul
 
Регистрация: 05.10.2014
Сообщений: 20

ну ни как не получается.
может кто нить все же поможет?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX-авторизация не работает начиная с версии jQuery 1.9.0 allanmiln AJAX и COMET 3 06.02.2013 11:40
Разные версии jquery Олежко jQuery 4 23.01.2013 20:44
2 разных версии jquery agert Events/DOM/Window 8 19.10.2012 09:55
Подскажите unwrap для версии jquery 1.3.2 Randomizer jQuery 4 07.10.2012 17:47
Не могу подогнать старый jQuery скрипт до версии 1.42 artnik jQuery 1 19.01.2011 18:02