/* name : touchMoveMenu.js maker : work6.kr */ (function ( $ ) { var pluginName = "touchMoveMenu"; var defaults = { container:"ul", container_sub:"li" }; var startTouchX = null; var moveTouchX = null; var startPositionX = null; var container = null; var nowLeft = 0; var masLeft = 0; var maxLeft = 150; var preleft = 0; function Plugin ( element, options ) { this.element = element; this.$element = $(element); this.settings = $.extend({}, defaults, options ); this.init(); } $.extend(Plugin.prototype, { init: function () { _this = this; _this.settings = _this.encoding(_this.settings); container = $(_this.element).find(_this.settings.container+":first"); container.css({"position":"relative","left":preleft,"top":0,"overflow":"hidden"}); $(_this.element).find('li').each(function(i,e){ maxLeft = maxLeft-$(e).width(); }); $(_this.element).bind('touchstart',function(event){ var e = event.originalEvent; startTouchX = e.targetTouches[0].pageX; startPositionX = $(this).css('left'); }); $(_this.element).bind('touchmove', function(event){ var e = event.originalEvent; moveTouchX = e.targetTouches[0].pageX; changeLeft = nowLeft+(moveTouchX - startTouchX); console.log(changeLeft); if(changeLeft>0 || changeLeft<=maxLeft){ return false; } container.css({left:changeLeft}); }); $(_this.element).bind('touchend', function(event){ nowLeft = _this.removepx(container.css('left')); }); }, encoding: function(settings){ settings.url = encodeURIComponent(settings.url); settings.icon = encodeURIComponent(settings.icon); settings.icon_name = encodeURIComponent(settings.icon_name); return settings; }, removepx: function(data){ data = data.replace('px',''); return parseInt(data); } }); $[ pluginName ] = $.fn[ pluginName ] = function ( options ) { return this.each(function() { if ( !$.data( this, "plugin_" + pluginName ) ) { $.data( this, "plugin_" + pluginName, new Plugin( this, options ) ); } }); }; $.fn[ pluginName ].defaults = defaults; })( jQuery, window, document );