Jquery mobile jQuery移动滑块/旋转木马
我需要使jQuery“Carousel”与本页中的内容非常相似: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
有很多“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++;
})
}
函数大小