• 28-02-2013, 22:02:25
    #1
    Üyeliği durduruldu
    Merhaba arkadaşlar. Elimde bi jquery slider var. Bu sliderda resimler oklara tıklayınca geçiyor. Fakat ben oklara tıklamadan da sliderın geçiş yapmasını istiyorum. Javascript bilgim kısıtlı olduğundan dolayı sizlerden yardım istiyorum. Slider 2 adet js dosyasıyla çalışıyor,kodlar aşağıdaki gibi .
    Şimdiden teşekkürler.

    /**
     * jquery.elastislide.js v1.1.0
     * http://www.codrops.com
     *
     * Licensed under the MIT license.
     * http://www.opensource.org/licenses/mit-license.php
     * 
     * Copyright 2012, Codrops
     * http://www.codrops.com
     */
    
    ;( function( $, window, undefined ) {
    	
    	'use strict';
    
    	/*
    	* debouncedresize: special jQuery event that happens once after a window resize
    	*
    	* latest version and complete README available on Github:
    	* https://github.com/louisremi/jquery-smartresize/blob/master/jquery.debouncedresize.js
    	*
    	* Copyright 2011 [MENTION=32783]Louis[/MENTION]_remi
    	* Licensed under the MIT license.
    	*/
    	var $event = $.event,
    	$special,
    	resizeTimeout;
    
    	$special = $event.special.debouncedresize = {
    		setup: function() {
    			$( this ).on( "resize", $special.handler );
    		},
    		teardown: function() {
    			$( this ).off( "resize", $special.handler );
    		},
    		handler: function( event, execAsap ) {
    			// Save the context
    			var context = this,
    				args = arguments,
    				dispatch = function() {
    					// set correct event type
    					event.type = "debouncedresize";
    					$event.dispatch.apply( context, args );
    				};
    
    			if ( resizeTimeout ) {
    				clearTimeout( resizeTimeout );
    			}
    
    			execAsap ?
    				dispatch() :
    				resizeTimeout = setTimeout( dispatch, $special.threshold );
    		},
    		threshold: 150
    	};
    	
    
    	// ======================= imagesLoaded Plugin ===============================
    	// [url]https://github.com/desandro/imagesloaded[/url]
    
    	// $('#my-container').imagesLoaded(myFunction)
    	// execute a callback when all images have loaded.
    	// needed because .load() doesn't work on cached images
    
    	// callback function gets image collection as argument
    	//  this is the container
    
    	// original: mit license. paul irish. 2010.
    	// contributors: Oren Solomianik, David DeSandro, Yiannis Chatzikonstantinou
    
    	// blank image data-uri bypasses webkit log warning (thx doug jones)
    	var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
    
    	$.fn.imagesLoaded = function( callback ) {
    		var $this = this,
    			deferred = $.isFunction($.Deferred) ? $.Deferred() : 0,
    			hasNotify = $.isFunction(deferred.notify),
    			$images = $this.find('img').add( $this.filter('img') ),
    			loaded = [],
    			proper = [],
    			broken = [];
    
    		// Register deferred callbacks
    		if ($.isPlainObject(callback)) {
    			$.each(callback, function (key, value) {
    				if (key === 'callback') {
    					callback = value;
    				} else if (deferred) {
    					deferred[key](value);
    				}
    			});
    		}
    
    		function doneLoading() {
    			var $proper = $(proper),
    				$broken = $(broken);
    
    			if ( deferred ) {
    				if ( broken.length ) {
    					deferred.reject( $images, $proper, $broken );
    				} else {
    					deferred.resolve( $images );
    				}
    			}
    
    			if ( $.isFunction( callback ) ) {
    				callback.call( $this, $images, $proper, $broken );
    			}
    		}
    
    		function imgLoaded( img, isBroken ) {
    			// don't proceed if BLANK image, or image is already loaded
    			if ( img.src === BLANK || $.inArray( img, loaded ) !== -1 ) {
    				return;
    			}
    
    			// store element in loaded images array
    			loaded.push( img );
    
    			// keep track of broken and properly loaded images
    			if ( isBroken ) {
    				broken.push( img );
    			} else {
    				proper.push( img );
    			}
    
    			// cache image and its state for future calls
    			$.data( img, 'imagesLoaded', { isBroken: isBroken, src: img.src } );
    
    			// trigger deferred progress method if present
    			if ( hasNotify ) {
    				deferred.notifyWith( $(img), [ isBroken, $images, $(proper), $(broken) ] );
    			}
    
    			// call doneLoading and clean listeners if all images are loaded
    			if ( $images.length === loaded.length ){
    				setTimeout( doneLoading );
    				$images.unbind( '.imagesLoaded' );
    			}
    		}
    
    		// if no images, trigger immediately
    		if ( !$images.length ) {
    			doneLoading();
    		} else {
    			$images.bind( 'load.imagesLoaded error.imagesLoaded', function( event ){
    				// trigger imgLoaded
    				imgLoaded( event.target, event.type === 'error' );
    			}).each( function( i, el ) {
    				var src = el.src;
    
    				// find out if this image has been already checked for status
    				// if it was, and src has not changed, call imgLoaded on it
    				var cached = $.data( el, 'imagesLoaded' );
    				if ( cached && cached.src === src ) {
    					imgLoaded( el, cached.isBroken );
    					return;
    				}
    
    				// if complete is true and browser supports natural sizes, try
    				// to check for image status manually
    				if ( el.complete && el.naturalWidth !== undefined ) {
    					imgLoaded( el, el.naturalWidth === 0 || el.naturalHeight === 0 );
    					return;
    				}
    
    				// cached images don't fire load sometimes, so we reset src, but only when
    				// dealing with IE, or image is complete (loaded) and failed manual check
    				// webkit hack from [url]http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f[/url]
    				if ( el.readyState || el.complete ) {
    					el.src = BLANK;
    					el.src = src;
    				}
    			});
    		}
    
    		return deferred ? deferred.promise( $this ) : $this;
    	};
    
    	// global
    	var $window = $( window ),
    		Modernizr = window.Modernizr;
    
    	$.Elastislide = function( options, element ) {
    		
    		this.$el = $( element );
    		this._init( options );
    		
    	};
    
    	$.Elastislide.defaults = {
    		autoplay: true,
                autoplayInterval: 1,
    		// orientation 'horizontal' || 'vertical'
    		orientation : 'horizontal',
    		// sliding speed
    		speed : 1000,
    		// sliding easing
    		easing : 'ease-in-out',
    		// the minimum number of items to show. 
    		// when we resize the window, this will make sure minItems are always shown 
    		// (unless of course minItems is higher than the total number of elements)
    		minItems : 3,
    		
    		// index of the current item (left most item of the carousel)
    		start : 0,
    		// click item callback direk geçiyo
    		onClick : function( el, position, evt ) { return true; },
    		onReady : function() { return true; },
    		onBeforeSlide : function() { return true; },
    		onAfterSlide : function() { return true; }
    	};
    
    	$.Elastislide.prototype = {
    
    		_init : function( options ) {
    			
    			// options
    			this.options = $.extend( true, {}, $.Elastislide.defaults, options );
    
    			// [url]https://github.com/twitter/bootstrap/issues/2870[/url]
    			var self = this,
    				transEndEventNames = {
    					'WebkitTransition' : 'webkitTransitionEnd',
    					'MozTransition' : 'transitionend',
    					'OTransition' : 'oTransitionEnd',
    					'msTransition' : 'MSTransitionEnd',
    					
    					'transition' : 'transitionend'
    					
    					 
    				};
    			
    			this.transEndEventName = transEndEventNames[ Modernizr.prefixed( 'transition' ) ];
    			
    			// suport for css transforms and css transitions
    			this.support = Modernizr.csstransitions && Modernizr.csstransforms;
    
    			// current item's index
    			this.current = this.options.start;
    
    			// control if it's sliding
    			this.isSliding = false;
    
    			this.$items = this.$el.children( 'li' );
    			// total number of items
    			this.itemsCount = this.$items.length;
    			if( this.itemsCount === 0 ) {
    
    				return false;
    
    			}
    			this._validate();
    			// remove white space
    			this.$items.detach();
    			this.$el.empty();
    			this.$el.append( this.$items );
    
    			// main wrapper
    			this.$el.wrap( '<div class="elastislide-wrapper elastislide-loading elastislide-' + this.options.orientation + '"></div>' );
    
    			// check if we applied a transition to the geri gelme olayı<ul>
    			this.hasTransition = false;
    			
    			// add transition for the <ul>
    			this.hasTransitionTimeout = setTimeout( function() {
    				
    				self._addTransition();
    
    			}, 100 );
    
    			// preload the images
    			
    			this.$el.imagesLoaded( function() {
    
    				self.$el.show();
    
    				self._layout();
    				self._configure();
    				
    				if( self.hasTransition ) {
    
    					// slide to current's position
    					self._removeTransition();
    					self._slideToItem( self.current );
    
    					self.$el.on( self.transEndEventName, function() {
    
    						self.$el.off( self.transEndEventName );
    						self._setWrapperSize();
    						// add transition for the <ul>
    						self._addTransition();
    						self._initEvents();
    
    					} );
    
    				}
    				else {
    
    					clearTimeout( self.hasTransitionTimeout );
    					self._setWrapperSize();
    					self._initEvents();
    					// slide to current's position
    					self._slideToItem( self.current );
    					setTimeout( function() { self._addTransition(); }, 25 );
    
    				}
    
    				self.options.onReady();
    
    			} );
    
    		},
    		_validate : function() {
    
    			if( this.options.speed < 0 ) {
    
    				this.options.speed = 500;
    
    			}
    			if( this.options.minItems < 1 || this.options.minItems > this.itemsCount ) {
    
    				this.options.minItems = 1;
    
    			}
    			if( this.options.start < 0 || this.options.start > this.itemsCount - 1 ) {
    
    				this.options.start = 0;
    
    			}
    			if( this.options.orientation != 'horizontal' && this.options.orientation != 'vertical' ) {
    
    				this.options.orientation = 'horizontal';
    
    			}
    				
    		},
    		_layout : function() {
    
    			this.$el.wrap( '<div class="elastislide-carousel"></div>' );
    
    			this.$carousel = this.$el.parent();
    			this.$wrapper = this.$carousel.parent().removeClass( 'elastislide-loading' );
    
    			// save original image sizes
    			var $img = this.$items.find( 'img:first' );
    			this.imgSize = { width : $img.outerWidth( true ), height : $img.outerHeight( true ) };
    
    			this._setItemsSize();
    			this.options.orientation === 'horizontal' ? this.$el.css( 'max-height', this.imgSize.height ) : this.$el.css( 'height', this.options.minItems * this.imgSize.height );
    
    			// add the controls
    			this._addControls();
    
    		},
    		_addTransition : function() {
    
    			if( this.support ) {
    
    				this.$el.css( 'transition', 'all ' + this.options.speed + 'ms ' + this.options.easing );
    				
    			}
    			this.hasTransition = true;
    
    		},
    		_removeTransition : function() {
    
    			if( this.support ) {
    
    				this.$el.css( 'transition', 'all 0s' );
    
    			}
    			this.hasTransition = false;
    			
    		},
    		_addControls : function() {
    
    			var self = this;
    
    			// add navigation elements
    			this.$navigation = $( '<nav><span class="elastislide-prev">Previous</span><span class="elastislide-next">Next</span></nav>' )
    				.appendTo( this.$wrapper );
    
    
    			this.$navPrev = this.$navigation.find( 'span.elastislide-prev' ).on( 'mousedown.elastislide', function( event ) {
    
    				self._slide( 'prev' );
    				return false;
    
    			} );
    
    			this.$navNext = this.$navigation.find( 'span.elastislide-next' ).on( 'mousedown.elastislide', function( event ) {
    
    				self._slide( 'next' );
    				return false;
    
    			} );
    
    		},
    		_setItemsSize : function() {
    
    			// width for the items (%)
    			var w = this.options.orientation === 'horizontal' ? ( Math.floor( this.$carousel.width() / this.options.minItems ) * 100 ) / this.$carousel.width() : 100;
    			
    			this.$items.css( {
    				'width' : w + '%',
    				'max-width' : this.imgSize.width,
    				'max-height' : this.imgSize.height
    			} );
    
    			if( this.options.orientation === 'vertical' ) {
    			
    				this.$wrapper.css( 'max-width', this.imgSize.width + parseInt( this.$wrapper.css( 'padding-left' ) ) + parseInt( this.$wrapper.css( 'padding-right' ) ) );
    			
    			}
    
    		},
    		_setWrapperSize : function() {
    
    			if( this.options.orientation === 'vertical' ) {
    
    				this.$wrapper.css( {
    					'height' : this.options.minItems * this.imgSize.height + parseInt( this.$wrapper.css( 'padding-top' ) ) + parseInt( this.$wrapper.css( 'padding-bottom' ) )
    				} );
    
    			}
    
    		},
    		_configure : function() {
    
    			// check how many items fit in the carousel (visible area -> this.$carousel.width() )
    			this.fitCount = this.options.orientation === 'horizontal' ? 
    								this.$carousel.width() < this.options.minItems * this.imgSize.width ? this.options.minItems : Math.floor( this.$carousel.width() / this.imgSize.width ) :
    								this.$carousel.height() < this.options.minItems * this.imgSize.height ? this.options.minItems : Math.floor( this.$carousel.height() / this.imgSize.height );
    
    		},
    		_initEvents : function() {
    
    			var self = this;
    
    			$window.on( 'debouncedresize.elastislide', function() {
    
    				self._setItemsSize();
    				self._configure();
    				self._slideToItem( self.current );
    
    			} );
    
    			this.$el.on( this.transEndEventName, function() {
    
    				self._onEndTransition();
    
    			} );
    
    			if( this.options.orientation === 'horizontal' ) {
    
    				this.$el.on( {
    					swipeleft : function() {
    
    						self._slide( 'next' );
    					
    					},
    					swiperight : function() {
    
    						self._slide( 'prev' );
    					
    					}
    				} );
    
    			}
    			else {
    
    				this.$el.on( {
    					swipeup : function() {
    
    						self._slide( 'next' );
    					
    					},
    					swipedown : function() {
    
    						self._slide( 'prev' );
    					
    					}
    				} );
    
    			}
    
    			// item click event
    			this.$el.on( 'click.elastislide', 'li', function( event ) {
    
    				var $item = $( this );
    
    				self.options.onClick( $item, $item.index(), event );
    				
    			});
    
    		},
    		_destroy : function( callback ) {
    			
    			this.$el.off( this.transEndEventName ).off( 'swipeleft swiperight swipeup swipedown .elastislide' );
    			$window.off( '.elastislide' );
    			
    			this.$el.css( {
    				'max-height' : 'none',
    				'transition' : 'none'
    			} ).unwrap( this.$carousel ).unwrap( this.$wrapper );
    
    			this.$items.css( {
    				'width' : 'auto',
    				'max-width' : 'none',
    				'max-height' : 'none'
    			} );
    
    			this.$navigation.remove();
    			this.$wrapper.remove();
    
    			if( callback ) {
    
    				callback.call();
    
    			}
    
    		},
    		_toggleControls : function( dir, display ) {
    
    			if( display ) {
    
    				( dir === 'next' ) ? this.$navNext.show() : this.$navPrev.show();
    
    			}
    			else {
    
    				( dir === 'next' ) ? this.$navNext.hide() : this.$navPrev.hide();
    
    			}
    			
    		},
    		_slide : function( dir, tvalue ) {
    
    			if( this.isSliding ) {
    
    				return false;
    
    			}
    			
    			this.options.onBeforeSlide();
    
    			this.isSliding = true;
    
    			var self = this,
    				translation = this.translation || 0,
    				// width/height of an item ( <li> )
    				itemSpace = this.options.orientation === 'horizontal' ? this.$items.outerWidth( true ) : this.$items.outerHeight( true ),
    				// total width/height of the <ul>
    				totalSpace = this.itemsCount * itemSpace,
    				// visible width/height
    				visibleSpace = this.options.orientation === 'horizontal' ? this.$carousel.width() : this.$carousel.height();
    			
    			if( tvalue === undefined ) {
    				
    				var amount = this.fitCount * itemSpace;
    
    				if( amount < 0 ) {
    
    					return false;
    
    				}
    
    				if( dir === 'next' && totalSpace - ( Math.abs( translation ) + amount ) < visibleSpace ) {
    
    					amount = totalSpace - ( Math.abs( translation ) + visibleSpace );
    
    					// show / hide navigation buttons
    					this._toggleControls( 'next', false );
    					this._toggleControls( 'prev', true );
    
    				}
    				else if( dir === 'prev' && Math.abs( translation ) - amount < 0 ) {
    
    					amount = Math.abs( translation );
    
    					// show / hide navigation buttons
    					this._toggleControls( 'next', true );
    					this._toggleControls( 'prev', false );
    
    				}
    				else {
    					
    					// future translation value
    					var ftv = dir === 'next' ? Math.abs( translation ) + Math.abs( amount ) : Math.abs( translation ) - Math.abs( amount );
    					
    					// show / hide navigation buttons
    					ftv > 0 ? this._toggleControls( 'prev', true ) : this._toggleControls( 'prev', false );
    					ftv < totalSpace - visibleSpace ? this._toggleControls( 'next', true ) : this._toggleControls( 'next', false );
    						
    				}
    				
    				tvalue = dir === 'next' ? translation - amount : translation + amount;
    
    			}
    			else {
    
    				var amount = Math.abs( tvalue );
    
    				if( Math.max( totalSpace, visibleSpace ) - amount < visibleSpace ) {
    
    					tvalue	= - ( Math.max( totalSpace, visibleSpace ) - visibleSpace );
    				
    				}
    
    				// show / hide navigation buttons
    				amount > 0 ? this._toggleControls( 'prev', true ) : this._toggleControls( 'prev', false );
    				Math.max( totalSpace, visibleSpace ) - visibleSpace > amount ? this._toggleControls( 'next', true ) : this._toggleControls( 'next', false );
    
    			}
    			
    			this.translation = tvalue;
    
    			if( translation === tvalue ) {
    				
    				this._onEndTransition();
    				return false;
    
    			}
    
    			if( this.support ) {
    				
    				this.options.orientation === 'horizontal' ? this.$el.css( 'transform', 'translateX(' + tvalue + 'px)' ) : this.$el.css( 'transform', 'translateY(' + tvalue + 'px)' );
    
    			}
    			else {
    
    				$.fn.applyStyle = this.hasTransition ? $.fn.animate : $.fn.css;
    				var styleCSS = this.options.orientation === 'horizontal' ? { left : tvalue } : { top : tvalue };
    				
    				this.$el.stop().applyStyle( styleCSS, $.extend( true, [], { duration : this.options.speed, complete : function() {
    
    					self._onEndTransition();
    					
    				} } ) );
    
    			}
    			
    			if( !this.hasTransition ) {
    
    				this._onEndTransition();
    
    			}
    
    		},
    		_onEndTransition : function() {
    
    			this.isSliding = false;
    			this.options.onAfterSlide();
    
    		},
    		_slideTo : function( pos ) {
    
    			var pos = pos || this.current,
    				translation = Math.abs( this.translation ) || 0,
    				itemSpace = this.options.orientation === 'horizontal' ? this.$items.outerWidth( true ) : this.$items.outerHeight( true ),
    				posR = translation + this.$carousel.width(),
    				ftv = Math.abs( pos * itemSpace );
    
    			if( ftv + itemSpace > posR || ftv < translation ) {
    
    				this._slideToItem( pos );
    			
    			}
    
    		},
    		_slideToItem : function( pos ) {
    
    			// how much to slide?
    			var amount	= this.options.orientation === 'horizontal' ? pos * this.$items.outerWidth( true ) : pos * this.$items.outerHeight( true );
    			this._slide( '', -amount );
    			
    		},
    		// public method: adds new items to the carousel
    		/*
    		
    		how to use:
    		var carouselEl = $( '#carousel' ),
    			carousel = carouselEl.elastislide();
    		...
    		
    		// append or prepend new items:
    		carouselEl.prepend('<li><a href="#"><img src="images/large/2.jpg" alt="image02" /></a></li>');
    
    		// call the add method:
    		es.add();
    		
    		*/
    		add : function( callback ) {
    			
    			var self = this,
    				oldcurrent = this.current,
    				$currentItem = this.$items.eq( this.current );
    			
    			// adds new items to the carousel
    			this.$items = this.$el.children( 'li' );
    			this.itemsCount = this.$items.length;
    			this.current = $currentItem.index();
    			this._setItemsSize();
    			this._configure();
    			this._removeTransition();
    			oldcurrent < this.current ? this._slideToItem( this.current ) : this._slide( 'next', this.translation );
    			setTimeout( function() { self._addTransition(); }, 25 );
    			
    			if ( callback ) {
    
    				callback.call();
    
    			}
    			
    		},
    		// public method: sets a new element as the current. slides to that position
    		setCurrent : function( idx, callback ) {
    			
    			this.current = idx;
    
    			this._slideTo();
    			
    			if ( callback ) {
    
    				callback.call();
    
    			}
    			
    		},
    		// public method: slides to the next set of items
    		next : function() {
    
    			self._slide( 'next' );
    
    		},
    		// public method: slides to the previous set of items
    		previous : function() {
    
    			self._slide( 'prev' );
    
    		},
    		// public method: slides to the first item
    		slideStart : function() {
    
    			this._slideTo( 0 );
    
    		},
    		// public method: slides to the last item
    		slideEnd : function() {
    
    			this._slideTo( this.itemsCount - 1 );
    
    		},
    		// public method: destroys the elastislide instance
    		destroy : function( callback ) {
    
    			this._destroy( callback );
    		
    		}
    
    	};
    	
    	var logError = function( message ) {
    
    		if ( window.console ) {
    
    			window.console.error( message );
    		
    		}
    
    	};
    	
    	$.fn.elastislide = function( options ) {
    
    		var self = $.data( this, 'elastislide' );
    		
    		if ( typeof options === 'string' ) {
    			
    			var args = Array.prototype.slice.call( arguments, 1 );
    			
    			this.each(function() {
    			
    				if ( !self ) {
    
    					logError( "cannot call methods on elastislide prior to initialization; " +
    					"attempted to call method '" + options + "'" );
    					return;
    				
    				}
    				
    				if ( !$.isFunction( self[options] ) || options.charAt(0) === "_" ) {
    
    					logError( "no such method '" + options + "' for elastislide self" );
    					return;
    				
    				}
    				
    				self[ options ].apply( self, args );
    			
    			});
    		
    		} 
    		else {
    		
    			this.each(function() {
    				
    				if ( self ) {
    
    					self._init();
    				
    				}
    				else {
    
    					self = $.data( this, 'elastislide', new $.Elastislide( options, this ) );
    				
    				}
    
    			});
    		
    		}
    		
    		return self;
    		
    	};
    	
    } )( jQuery, window );
    (function() {
    
    	var event = jQuery.event,
    
    		//helper that finds handlers by type and calls back a function, this is basically handle
    		// events - the events object
    		// types - an array of event types to look for
    		// callback(type, handlerFunc, selector) - a callback
    		// selector - an optional selector to filter with, if there, matches by selector
    		//     if null, matches anything, otherwise, matches with no selector
    		findHelper = function( events, types, callback, selector ) {
    			var t, type, typeHandlers, all, h, handle, 
    				namespaces, namespace,
    				match;
    			for ( t = 0; t < types.length; t++ ) {
    				type = types[t];
    				all = type.indexOf(".") < 0;
    				if (!all ) {
    					namespaces = type.split(".");
    					type = namespaces.shift();
    					namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
    				}
    				typeHandlers = (events[type] || []).slice(0);
    
    				for ( h = 0; h < typeHandlers.length; h++ ) {
    					handle = typeHandlers[h];
    					
    					match = (all || namespace.test(handle.namespace));
    					
    					if(match){
    						if(selector){
    							if (handle.selector === selector  ) {
    								callback(type, handle.origHandler || handle.handler);
    							}
    						} else if (selector === null){
    							callback(type, handle.origHandler || handle.handler, handle.selector);
    						}
    						else if (!handle.selector ) {
    							callback(type, handle.origHandler || handle.handler);
    							
    						} 
    					}
    					
    					
    				}
    			}
    		};
    
    	/**
    	 * Finds event handlers of a given type on an element.
    	 * @param {HTMLElement} el
    	 * @param {Array} types an array of event names
    	 * @param {String} [selector] optional selector
    	 * [MENTION=28303]return[/MENTION] {Array} an array of event handlers
    	 */
    	event.find = function( el, types, selector ) {
    		var events = ( $._data(el) || {} ).events,
    			handlers = [],
    			t, liver, live;
    
    		if (!events ) {
    			return handlers;
    		}
    		findHelper(events, types, function( type, handler ) {
    			handlers.push(handler);
    		}, selector);
    		return handlers;
    	};
    	/**
    	 * Finds all events.  Group by selector.
    	 * @param {HTMLElement} el the element
    	 * @param {Array} types event types
    	 */
    	event.findBySelector = function( el, types ) {
    		var events = $._data(el).events,
    			selectors = {},
    			//adds a handler for a given selector and event
    			add = function( selector, event, handler ) {
    				var select = selectors[selector] || (selectors[selector] = {}),
    					events = select[event] || (select[event] = []);
    				events.push(handler);
    			};
    
    		if (!events ) {
    			return selectors;
    		}
    		//first check live:
    		/*$.each(events.live || [], function( i, live ) {
    			if ( $.inArray(live.origType, types) !== -1 ) {
    				add(live.selector, live.origType, live.origHandler || live.handler);
    			}
    		});*/
    		//then check straight binds
    		findHelper(events, types, function( type, handler, selector ) {
    			add(selector || "", type, handler);
    		}, null);
    
    		return selectors;
    	};
    	event.supportTouch = "ontouchend" in document;
    	
    	$.fn.respondsTo = function( events ) {
    		if (!this.length ) {
    			return false;
    		} else {
    			//add default ?
    			return event.find(this[0], $.isArray(events) ? events : [events]).length > 0;
    		}
    	};
    	$.fn.triggerHandled = function( event, data ) {
    		event = (typeof event == "string" ? $.Event(event) : event);
    		this.trigger(event, data);
    		return event.handled;
    	};
    	/**
    	 * Only attaches one event handler for all types ...
    	 * @param {Array} types llist of types that will delegate here
    	 * @param {Object} startingEvent the first event to start listening to
    	 * @param {Object} onFirst a function to call 
    	 */
    	event.setupHelper = function( types, startingEvent, onFirst ) {
    		if (!onFirst ) {
    			onFirst = startingEvent;
    			startingEvent = null;
    		}
    		var add = function( handleObj ) {
    
    			var bySelector, selector = handleObj.selector || "";
    			if ( selector ) {
    				bySelector = event.find(this, types, selector);
    				if (!bySelector.length ) {
    					$(this).delegate(selector, startingEvent, onFirst);
    				}
    			}
    			else {
    				//var bySelector = event.find(this, types, selector);
    				if (!event.find(this, types, selector).length ) {
    					event.add(this, startingEvent, onFirst, {
    						selector: selector,
    						delegate: this
    					});
    				}
    
    			}
    
    		},
    			remove = function( handleObj ) {
    				var bySelector, selector = handleObj.selector || "";
    				if ( selector ) {
    					bySelector = event.find(this, types, selector);
    					if (!bySelector.length ) {
    						$(this).undelegate(selector, startingEvent, onFirst);
    					}
    				}
    				else {
    					if (!event.find(this, types, selector).length ) {
    						event.remove(this, startingEvent, onFirst, {
    							selector: selector,
    							delegate: this
    						});
    					}
    				}
    			};
    		$.each(types, function() {
    			event.special[this] = {
    				add: add,
    				remove: remove,
    				setup: function() {},
    				teardown: function() {}
    			};
    		});
    	};
    })(jQuery);
    (function($){
    var isPhantom = /Phantom/.test(navigator.userAgent),
    	supportTouch = !isPhantom && "ontouchend" in document,
    	scrollEvent = "touchmove scroll",
    	// Use touch events or map it to mouse events
    	touchStartEvent = supportTouch ? "touchstart" : "mousedown",
    	touchStopEvent = supportTouch ? "touchend" : "mouseup",
    	touchMoveEvent = supportTouch ? "touchmove" : "mousemove",
    	data = function(event){
    		var d = event.originalEvent.touches ?
    			event.originalEvent.touches[ 0 ] :
    			event;
    		return {
    			time: (new Date).getTime(),
    			coords: [ d.pageX, d.pageY ],
    			origin: $( event.target )
    		};
    	};
    
    /**
     * [MENTION=62101]ADD[/MENTION] jQuery.event.swipe
     */
    var swipe = $.event.swipe = {
    	/**
    	 * @attribute delay
    	 * Delay is the upper limit of time the swipe motion can take in milliseconds.  This defaults to 500.
    	 * 
    	 * A user must perform the swipe motion in this much time.
    	 */
    	delay : 500,
    	/**
    	 * @attribute max
    	 * The maximum distance the pointer must travel in pixels.  The default is 75 pixels.
    	 */
    	max : 75,
    	/**
    	 * @attribute min
    	 * The minimum distance the pointer must travel in pixels.  The default is 30 pixels.
    	 */
    	min : 30
    };
    
    $.event.setupHelper( [
    
    /**
     * @hide
     * @attribute swipe
     */
    "swipe",
    /**
     * @hide
     * @attribute swipeleft
     */
    'swipeleft',
    /**
     * @hide
     * @attribute swiperight
     */
    'swiperight',
    /**
     * @hide
     * @attribute swipeup
     */
    'swipeup',
    /**
     * @hide
     * @attribute swipedown
     */
    'swipedown'], touchStartEvent, function(ev){
    	var
    		// update with data when the event was started
    		start = data(ev),
    		stop,
    		delegate = ev.delegateTarget || ev.currentTarget,
    		selector = ev.handleObj.selector,
    		entered = this;
    	
    	function moveHandler(event){
    		if ( !start ) {
    			return;
    		}
    		// update stop with the data from the current event
    		stop = data(event);
    
    		// prevent scrolling
    		if ( Math.abs( start.coords[0] - stop.coords[0] ) > 10 ) {
    			event.preventDefault();
    		}
    	};
    
    	// Attach to the touch move events
    	$(document.documentElement).bind(touchMoveEvent, moveHandler)
    		.one(touchStopEvent, function(event){
    			$(this).unbind( touchMoveEvent, moveHandler);
    			// if start and stop contain data figure out if we have a swipe event
    			if ( start && stop ) {
    				// calculate the distance between start and stop data
    				var deltaX = Math.abs(start.coords[0] - stop.coords[0]),
    					deltaY = Math.abs(start.coords[1] - stop.coords[1]),
    					distance = Math.sqrt(deltaX*deltaX+deltaY*deltaY);
    
    				// check if the delay and distance are matched
    				if ( stop.time - start.time < swipe.delay && distance >= swipe.min ) {
    					var events = ['swipe'];
    					// check if we moved horizontally
    					if( deltaX >= swipe.min && deltaY < swipe.min) {
    						// based on the x coordinate check if we moved left or right
    						events.push( start.coords[0] > stop.coords[0] ? "swipeleft" : "swiperight" );
    					} else
    					// check if we moved vertically
    					if(deltaY >= swipe.min && deltaX < swipe.min){
    						// based on the y coordinate check if we moved up or down
    						events.push( start.coords[1] < stop.coords[1] ? "swipedown" : "swipeup" );
    					}
    
    					// trigger swipe events on this guy
    					$.each($.event.find(delegate, events, selector), function(){
    						this.call(entered, ev, {start : start, end: stop})
    					})
    				
    				}
    			}
    			// reset start and stop
    			start = stop = undefined;
    		})
    });
    
    })(jQuery)
  • 20-03-2013, 22:48:27
    #2
    Misafir
    piyasada bir sürü kullanımı basit slider var bence basit birşey bulup seçin bu karma karışık.