Показать сообщение отдельно
  #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);
Ответить с цитированием