Jquery mobile jQuery移动滑块/旋转木马

Jquery mobile jQuery移动滑块/旋转木马,jquery-mobile,jcarousel,carousel,swipe,Jquery Mobile,Jcarousel,Carousel,Swipe,我需要使jQuery“Carousel”与本页中的内容非常相似: 有很多“carousel”jQuery插件,但是如何将carousel next/prev页面动作绑定到“swipe”手机/平板电脑手势?要么使用JQM插件(我已经看到一些可用的),要么添加自己的触摸事件管理并手动调用所选插件上的next/prev 比如说, $(document).swiperight(function(){ jqPlugin.goPrev(); }); $(document).swipeleft(func

我需要使jQuery“Carousel”与本页中的内容非常相似:


有很多“carousel”jQuery插件,但是如何将carousel next/prev页面动作绑定到“swipe”手机/平板电脑手势?

要么使用JQM插件(我已经看到一些可用的),要么添加自己的触摸事件管理并手动调用所选插件上的next/prev

比如说,

$(document).swiperight(function(){
  jqPlugin.goPrev();
});

$(document).swipeleft(function(){
  jqPlugin.goNext();
});

关于JQM事件的更多细节可以在他们的

中找到,这里是他们的jquerycarousel插件的代码

(function ($) {
    $.fn.slideCarousel = function (options) {
        var options = jQuery.extend({
            duration: 500,
            current_slide: 0,
            counter_slide: false,
            structure_counter_parent: "<div class='slider-counter'></div>",
            structure_counter_el: "<span></span>",
            counter_slide_number: false,
            btn_next: false,
            btn_prev: false,
            slide_switch: false,
            slide_timer: 10000
        }, options);

        return this.each(function () {

            var elem = this;
            var slides = $(elem).children();
            var slide_last = slides.length - 1;
            var img_list = $(elem).find('img');
            var current_slide = options.current_slide;
            var current_slide_counter = options.current_slide;
            var width_elem;
            var nav_version = navigator.appVersion;
            var permit_next = true;
            var css_transitions;
            var css_transform;
            var _timer;
            var transit_timer;
            var agent = null;
            var orient_change = true;
            var link_counter;

            $(elem).closest("*[data-role='page']").bind('pageshow', setup);

            $(window).bind('resize orientationchange', function () {
                if (!permit_next) {
                    orient_change = false;
                    return;
                }
                size_change();
            });

            function size_change() {
                size_slider();
                fix_slider();
                return false;
            }

            if (css_supports('transition')) {
                css_transitions = true;
                if (agent === null) {
                    agent = GetAgent();
                }
                var agent_low = agent.replace(/^[a-zA-Z]/, function (value) {
                    return value.toLowerCase();
                });
                slides.bind(agent_low + 'TransitionEnd transitionend', TransitionEnd);
            }

            if (css_supports('transform')) {
                if (agent === null) {
                    agent = GetAgent();
                }
                if (agent == 'Webkit') {
                    if (nav_version.indexOf('BlackBerry') == -1 || nav_version.indexOf('Version/7') == -1) {
                        if (nav_version.indexOf('Android') == -1 || $(elem).closest("*[data-role='page']").find('select').length == 0) {
                            css_transform = true;
                            slides.css(agent + 'Transform', 'translate3d(0px,0px,0px)');
                        }
                    }
                }
            }

            if (nav_version.indexOf('Android 2.1') != -1) {
                if (document.getElementsByTagName('iframe').length > 0) {
                    $(elem).closest("*[data-role='page']").bind('pagebeforehide', function () {
                        $(this).nextAll("[data-role='page']").bind('pagebeforeshow', function () {
                            window.location.reload();
                        });
                    });
                }
            }

            function css_supports(css_prop) {
                var div = document.createElement('div'),
                    vendors = 'Khtml Ms O Moz Webkit'.split(' '),
                    len = vendors.length;
                if (css_prop in div.style) return true;
                css_prop = css_prop.replace(/^[a-z]/, function (val) {
                    return val.toUpperCase();
                });
                while (len--) {
                    if (vendors[len] + css_prop in div.style) {
                        agent = vendors[len];
                        return true;
                    }
                }
                return false;
            }

            function GetAgent() {
                $.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());

                if ($.browser.chrome) return "Moz";
                if ($.browser.mozilla) return "Moz";
                if ($.browser.opera) return "O";
                if ($.browser.safari) return "Webkit";
                if ($.browser.msie) return "Ms";
            }

            function setup() {
                if (agent == 'Webkit') {
                    if (img_list.length > 0) img();
                }
                loadEnd();
            }

            function img() {
                var call_back = 0;
                var error_back = 0;
                img_list.each(function () {
                    $(this).bind('error', function () {
                        error_back++;
                        img_event(call_back + error_back);
                    });
                    $(this).bind('load', function () {
                        call_back++;
                        img_event(call_back + error_back);
                    });
                });
            }

            function img_event(event_back) {
                if (event_back == img_list.length) {
                    loadEnd();
                }
            }

            function loadEnd() {
                addClass();
                size_slider();
                fix_slider();
            };

            function addClass() {
                var i = 0;
                slides.each(function () {
                    $(this).addClass('slide-item-' + i);
                    i++;
                })
            }

            function size_slider() {
                var height = 0;
                offTransition();
                width_elem = $(elem).width();
                slides.css('width', width_elem);
                slides.each(function () {               
                    if ($(this).outerHeight() > height) height = $(this).outerHeight();
                });             
                $(elem).css('height', height);
            }

            function fix_slider() {
                offTransition();
                if (css_transform) {
                    slides.not('.slide-item-' + current_slide).css(agent + 'Transform', 'translate3d' + '(' + width_elem + 'px,0,0)');
                    slides.filter('.slide-item-' + current_slide).css(agent + 'Transform', 'translate3d(0,0,0)');
                    return;
                }
                slides.not('.slide-item-' + current_slide).css('left', width_elem);
                slides.filter('.slide-item-' + current_slide).css('left', 0);
            }

            if (options.counter_slide) {
                $(elem).after(options.structure_counter_parent);
                link_counter = $(elem).next();
                slides.each(function () {
                    link_counter.append(options.structure_counter_el);
                });
                if (options.counter_slide_number) {
                    var i = 1;
                    link_counter.find("*:empty").each(function () {
                        $(this).text(i);
                        i++;
                    })
                }
            }

            addCheck();

            function slideCounter() {
                link_counter.children().removeClass('current');
                link_counter.children().eq(current_slide).addClass('current');
            }

            function addCheck() {
                if (options.counter_slide) slideCounter();
                if (options.slide_switch) onTimer();
            }

            function onTimer() {
                _timer = setTimeout(function () {
                    slideNext();
                }, options.slide_timer)
            }

            function offTransition() {
                if (css_transitions) {
                    slides.css('transition-property', 'none')
                    .css(agent + 'TransitionProperty', 'none');
                }
            }

            function TransitionEnd() {
                if (!orient_change) {
                    size_change();
                    orient_change = true;
                }
                permit_next = true;
            }

            $(elem).bind('swipeleft', slideNext);
            if (options.btn_next) {
                $(options.btn_next).bind('tap', slideNext);
            };

            $(elem).bind('swiperight', slidePrev);
            if (options.btn_prev) {
                $(options.btn_prev).bind('tap', slidePrev);
            };

            function checkDevice() {
                if (true) {
                    $(document).scrollTop($(document).scrollTop() + 1);
                }
            }

            function preparation_next() {
                var current_slide_;
                offTransition();
                if (current_slide > slide_last) current_slide_ = 0;
                else current_slide_ = current_slide;
                if (css_transform) {
                    slides.filter('.slide-item-' + current_slide_).css(agent + 'Transform', 'translate3d' + '(' + width_elem + 'px,0,0)');
                    return;
                }
                slides.filter('.slide-item-' + current_slide_).css('left', width_elem);
            }

            function preparation_prev() {
                var current_slide_;
                offTransition();
                if (current_slide < 0) current_slide_ = slide_last;
                else current_slide_ = current_slide;
                if (css_transform) {
                    slides.filter('.slide-item-' + current_slide_).css(agent + 'Transform', 'translate3d' + '(' + (-width_elem) + 'px,0,0)');
                    return;
                }
                slides.filter('.slide-item-' + current_slide_).css('left', -width_elem);
            }

            function slideNext(event) {
                if (event) event.stopPropagation();
                if (!permit_next) return;
                if (options.slide_switch) clearTimeout(_timer);
                current_slide++;
                preparation_next();
                slideToggle('next');
            }

            function slidePrev(event) {
                if (event) event.stopPropagation();
                if (!permit_next) return;
                if (options.slide_switch) clearTimeout(_timer);
                current_slide--;
                preparation_prev();
                slideToggle('prev');
            }

            function slideToggle(direct) {
                if (css_transitions) {
                    if (transit_timer) return;
                    transit_timer = setTimeout(function () {
                        slides.css('transition', 'all ' + options.duration + 'ms')
                        .css(agent + 'Transition', 'all ' + options.duration + 'ms');
                        setTimeout(function () {
                            if (direct == 'next') {
                                if (css_transform) {
                                    slides.filter('.slide-item-' + (current_slide - 1)).css(agent + 'Transform', 'translate3d' + '(' + (-width_elem) + 'px,0,0)');
                                    if (current_slide > slide_last) current_slide = 0;
                                    slides.filter('.slide-item-' + current_slide).css(agent + 'Transform', 'translate3d(0,0,0)');
                                }
                                else {
                                    slides.filter('.slide-item-' + (current_slide - 1)).css('left', -width_elem);
                                    if (current_slide > slide_last) current_slide = 0;
                                    slides.filter('.slide-item-' + current_slide).css('left', 0);
                                }
                            }
                            else if (direct == 'prev') {
                                if (css_transform) {
                                    slides.filter('.slide-item-' + (current_slide + 1)).css(agent + 'Transform', 'translate3d' + '(' + width_elem + 'px,0,0)');
                                    if (current_slide < 0) current_slide = slide_last;
                                    slides.filter('.slide-item-' + current_slide).css(agent + 'Transform', 'translate3d(0,0,0)');
                                }
                                else {
                                    slides.filter('.slide-item-' + (current_slide + 1)).css('left', width_elem);
                                    if (current_slide < 0) current_slide = slide_last;
                                    slides.filter('.slide-item-' + current_slide).css('left', 0);
                                }
                            }
                            addCheck();
                            transit_timer = false;
                        }, 1);
                    }, 20);
                }
                else {
                    if (direct == 'next') {
                        slides.filter('.slide-item-' + (current_slide - 1)).animate({ left: -width_elem }, options.duration);
                        if (current_slide > slide_last) current_slide = 0;
                        slides.filter('.slide-item-' + current_slide).animate({ left: 0 }, options.duration, TransitionEnd);
                    }
                    else if (direct == 'prev') {
                        slides.filter('.slide-item-' + (current_slide + 1)).animate({ left: width_elem }, options.duration);
                        if (current_slide < 0) current_slide = slide_last;
                        slides.filter('.slide-item-' + current_slide).animate({ left: 0 }, options.duration, TransitionEnd);
                    }
                    addCheck();
                }
                if (options.duration > 1) permit_next = false;
            }
        });
    };
})(jQuery);
(函数($){
$.fn.slideCarousel=函数(选项){
var options=jQuery.extend({
持续时间:500,
当前幻灯片:0,
反幻灯片:错误,
结构\u计数器\u父项:“”,
结构_计数器_el:“”,
计数器编号:false,
下一步:错,
上一页:错误,
滑动开关:错误,
滑动计时器:10000
},选项);
返回此。每个(函数(){
var elem=这个;
var slides=$(elem.children();
var slide_last=slides.length-1;
var img_list=$(elem).find('img');
var current\u slide=选项。current\u slide;
var current\u slide\u counter=选项。current\u slide;
可变宽度元素;
var nav_version=navigator.appVersion;
var permit_next=true;
var-css_变换;
var-css_变换;
变量计时器;
无功传输定时器;
var-agent=null;
var orient_change=真;
var链路计数器;
$(elem).closed(“*[data role='page']”)。bind('pageshow',setup);
$(窗口).bind('resize orientationchange',function(){
如果(!允许下一步){
改变方向=错误;
返回;
}
尺寸变化();
});
函数大小_变化(){
大小_滑块();
固定滑块();
返回false;
}
if(css_支持('transition')){
css_transitions=true;
如果(代理===null){
agent=GetAgent();
}
var agent_low=agent.replace(/^[a-zA-Z]/,函数(值){
返回值。toLowerCase();
});
slides.bind(agent_low+'transitionnend transitionnend',transitiononed);
}
if(css_支持('transform')){
如果(代理===null){
agent=GetAgent();
}
如果(代理=='Webkit'){
如果(导航版本.indexOf('BlackBerry')=-1 | |导航版本.indexOf('version/7')=-1){
if(nav_version.indexOf('Android')==-1 | |$(elem).closest(“*[data role='page']”)。find('select')。length==0){
css_transform=true;
css(agent+‘Transform’,‘translate3d(0px,0px,0px)’);
}
}
}
}
如果(nav_version.indexOf('Android 2.1')!=-1){
if(document.getElementsByTagName('iframe')。长度>0){
$(elem).最近的(“*[data role='page']”)。绑定('pagebeforehide',函数(){
$(this).nextAll(“[data role='page']”)。bind('pagebeforeshow',function(){
window.location.reload();
});
});
}
}
功能css_支持(css_道具){
var div=document.createElement('div'),
供应商='Khtml Ms O Moz Webkit'。拆分(''),
len=长度;
如果(div.style中的css_prop)返回true;
css_prop=css_prop.replace(/^[a-z]/,函数(val){
返回值toUpperCase();
});
而(len--){
if(供应商[len]+div.style中的css_道具){
代理=供应商[len];
返回true;
}
}
返回false;
}
函数GetAgent(){
$.browser.chrome=/chrome/.test(navigator.userAgent.toLowerCase());
如果($.browser.chrome)返回“Moz”;
如果($.browser.mozilla)返回“Moz”;
if($.browser.opera)返回“O”;
如果($.browser.safari)返回“Webkit”;
如果($.browser.msie)返回“Ms”;
}
函数设置(){
如果(代理=='Webkit'){
如果(img_list.length>0)img();
}
loadEnd();
}
函数img(){
var call_back=0;
var错误返回=0;
img_列表。每个(函数(){
$(this).bind('error',function(){
错误返回++;
img_事件(回拨+错误回拨);
});
$(this.bind('load',function(){
回调++;
img_事件(回拨+错误回拨);
});
});
}
功能img\U事件(事件返回){
if(event\u back==img\u list.length){
loadEnd();
}
}
函数loadEnd(){
addClass();
大小_滑块();
固定滑块();
};
函数addClass(){
var i=0;
幻灯片。每个(函数(){
$(this).addClass('slide-item-'+i);
i++;
})
}
函数大小