/** * JQuery插件,在特定的DOM元素上滑动(鼠标滑动、触摸滑动)时,执行一个函数 * 插件目前仅用于滑动翻页。在别的地方使用,可能需要修改插件代码 * Created by 广平 on 2017/5/19. */ ;(function ($,window,document,undefined) { $.fn.slideAction = function(options) { var _defaults = { //要执行的函数 execfun: function(){ alert('请在调用时指定要执行的函数!'); }, //当前第几页 cPage: 1, //一共多少页 maxPage: 1 }; var settings = $.extend({},_defaults,options); var $elemets = this; return $elemets.each(function(){ var slide_x;//在X方向滑动的距离 //触摸滑动 $(this).on("touchstart", function(event){ slide_x = event.originalEvent.targetTouches[0].pageX; }); $(this).on("touchend", function(event){ var move_x = parseInt(event.originalEvent.changedTouches[0].pageX) - parseInt(slide_x); if(move_x > 20) { //右移,向前翻页 if(settings.cPage > 1) { settings.execfun(settings.cPage - 1); } } else if(move_x < -20){ //左移,向后翻页 if(settings.cPage < settings.maxPage) settings.execfun(settings.cPage + 1); } }); //鼠标滑动 $(this).on("mousedown", function(event){ event.preventDefault(); slide_x = event.pageX; }); $(this).on("mouseup", function(event){ var move_x = parseInt(event.pageX) - parseInt(slide_x); if(move_x > 20) { //右移,向前翻页 if(settings.cPage > 1) { settings.execfun(settings.cPage - 1); } } else if(move_x < -20){ //左移,向后翻页 if(settings.cPage < settings.maxPage) settings.execfun(settings.cPage + 1); } }); }); }; }(jQuery,window,document));