Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.06.2015, 13:50
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

jQuery плагин с моддержкой методов
Реализовал нехитрый слайдер в виде плагина, все работает отлично, цыпочку вызово поддерживает, но не могу разобратся с методами
http://stackoverflow.com/questions/1...n-with-methods

Что делаю не так, в чем проблема?

(function($) {

	var methods = {
		init: function() {
			var el = this,
			resize = 100,
			lengthSlides = $(el).find('.slider-item').length,
			widthSlides = lengthSlides * resize + '%',
			currentSlide = 1;
			$(el).find('.sliderItemWrapper').width(widthSlides);
				var inter = setInterval(nextSlide, 2000);
				$(el).hover(function() {
					clearInterval(inter);
				}, function() {
					inter = setInterval(nextSlide, 2000);
				});
				$(el).find('.slider_left').click(prevSlide);
				$(el).find('.slider_right').click(nextSlide);
				$(el).find('.slider-item:nth-child(2) .slider-img').addClass('small-img');
			},

			slideAnim: function() {
				$(el).find('.slider-img').removeClass('active-img slider-img-left', 1500, "easeOutSine");
				$(el).find('.des-slide').removeClass('des-slide-show', 1500, "easeOutSine");
				$(el).find('.des-slide').addClass('des-slide-hide', 500, "easeOutSine");
				$(el).find('.slider-img').addClass('small-img', 1500, "easeOutSine");
				$(el).find('.slider-item:nth-child('+currentSlide+') .slider-img').addClass('active-img slider-img-left', 1500, "easeOutSine");
				$(el).find('.slider-item:nth-child('+currentSlide+') .des-slide').addClass('des-slide-show', 1500, "easeOutSine");
			},

			nextSlide: function() {
				if ( currentSlide == lengthSlides )
					currentSlide = 0;
				$(el).find('.sliderItemWrapper').animate({
					'left': -currentSlide * resize + '%'
				}, 2000);
				currentSlide++;
				slideAnim();
			},

			prevSlide: function() {
				currentSlide--;
				if ( currentSlide == 0 )
					currentSlide = lengthSlides;
				$(el).find('.sliderItemWrapper').animate({
					'left': -(currentSlide -1) * resize + '%'
				}, 2000);
				slideAnim();
			}
	};

		 $.fn.slide = function(methodOrOptions, options) {
		 	return this.each(function() {
        if ( methods[methodOrOptions] ) {
            return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 ));
        } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
            return methods.init.apply( this, arguments );
        } else {
            $.error( 'Method ' +  methodOrOptions + ' does not exist on jQuery.tooltip' );
        }    
        });
    };
})(jQuery);
Ответить с цитированием
  #2 (permalink)  
Старый 18.06.2015, 14:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

falkone,
и что с методами не так?
и может рабочий макет полностью
Ответить с цитированием
  #3 (permalink)  
Старый 18.06.2015, 15:08
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

Вот собственно код,
script/slide.js лежит сам код плагина, ниже закоментирована часть которая работает но без методов.

Для удобства закинул сюда http://jsfiddle.net/falkone/2j8dn0hy/1/
jQuery UI не подключал, по этому переходы резкие.
Вложения:
Тип файла: zip plugin.zip (924.5 Кб, 0 просмотров)

Последний раз редактировалось falkone, 18.06.2015 в 15:16.
Ответить с цитированием
  #4 (permalink)  
Старый 18.06.2015, 16:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

falkone,
var inter = setInterval(nextSlide, 2000);
нету есть el.nextSlide или methods["nextSlide"]из-за таких строк и не работает

Последний раз редактировалось рони, 18.06.2015 в 16:27.
Ответить с цитированием
  #5 (permalink)  
Старый 18.06.2015, 16:53
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

Даже не знаю, попробовал подобавлять this, el вначале консоль указавыла на места с которых не может взять значение а потом ни одной ошибки а результат нулевой.
Ответить с цитированием
  #6 (permalink)  
Старый 18.06.2015, 17:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

falkone,
так веть и currentSlide и прочее видны только в init
Ответить с цитированием
  #7 (permalink)  
Старый 18.06.2015, 17:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

falkone,
как вариант $(el).data("slide", {currentSlide : 1, resize : 100}), но лучше бы кто-то, кто понимает в обьектах ,глянул.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ни один скрипт и плагин не видит Jquery razorg1991 jQuery 5 30.03.2014 14:51
плагин jquery ajax upload Karabella jQuery 0 06.06.2013 21:25
Вопрос поддержки старых методов jQuery antonM jQuery 1 04.10.2012 00:08
Плагин jQuery form. Добавляю форму js'ом Physicist jQuery 3 21.07.2011 17:46
syncTranslate jQuery плагин Snowcore Ваши сайты и скрипты 0 20.10.2009 19:00