|
1 | 1 | /*
|
2 |
| - * jQuery FlexSlider v2.4.0 |
| 2 | + * jQuery FlexSlider v2.5.0 |
3 | 3 | * Copyright 2012 WooThemes
|
4 | 4 | * Contributing Author: Tyler Smith
|
5 | 5 | */
|
|
76 | 76 | // MANUAL:
|
77 | 77 | if (slider.vars.manualControls !== "") slider.manualControls = $(slider.vars.manualControls).length > 0 && $(slider.vars.manualControls);
|
78 | 78 |
|
| 79 | + // CUSTOM DIRECTION NAV: |
| 80 | + if (slider.vars.customDirectionNav !== "") slider.customDirectionNav = $(slider.vars.customDirectionNav).length === 2 && $(slider.vars.customDirectionNav); |
| 81 | + |
79 | 82 | // RANDOMIZE:
|
80 | 83 | if (slider.vars.randomize) {
|
81 | 84 | slider.slides.sort(function() { return (Math.round(Math.random())-0.5); });
|
|
217 | 220 | item = (slider.vars.controlNav === "thumbnails") ? '<img src="' + slide.attr( 'data-thumb' ) + '"/>' : '<a>' + j + '</a>';
|
218 | 221 | if ( 'thumbnails' === slider.vars.controlNav && true === slider.vars.thumbCaptions ) {
|
219 | 222 | var captn = slide.attr( 'data-thumbcaption' );
|
220 |
| - if ( '' != captn && undefined != captn ) { item += '<span class="' + namespace + 'caption">' + captn + '</span>'; } |
| 223 | + if ( '' !== captn && undefined !== captn ) { item += '<span class="' + namespace + 'caption">' + captn + '</span>'; } |
221 | 224 | }
|
222 | 225 | slider.controlNavScaffold.append('<li>' + item + '</li>');
|
223 | 226 | j++;
|
|
298 | 301 | setup: function() {
|
299 | 302 | var directionNavScaffold = $('<ul class="' + namespace + 'direction-nav"><li class="' + namespace + 'nav-prev"><a class="' + namespace + 'prev" href="#">' + slider.vars.prevText + '</a></li><li class="' + namespace + 'nav-next"><a class="' + namespace + 'next" href="#">' + slider.vars.nextText + '</a></li></ul>');
|
300 | 303 |
|
| 304 | + // CUSTOM DIRECTION NAV: |
| 305 | + if (slider.customDirectionNav) { |
| 306 | + slider.directionNav = slider.customDirectionNav; |
301 | 307 | // CONTROLSCONTAINER:
|
302 |
| - if (slider.controlsContainer) { |
| 308 | + } else if (slider.controlsContainer) { |
303 | 309 | $(slider.controlsContainer).append(directionNavScaffold);
|
304 | 310 | slider.directionNav = $('.' + namespace + 'direction-nav li a', slider.controlsContainer);
|
305 | 311 | } else {
|
|
390 | 396 | cwidth,
|
391 | 397 | dx,
|
392 | 398 | startT,
|
| 399 | + onTouchStart, |
| 400 | + onTouchMove, |
| 401 | + onTouchEnd, |
393 | 402 | scrolling = false,
|
394 | 403 | localX = 0,
|
395 | 404 | localY = 0,
|
396 | 405 | accDx = 0;
|
397 | 406 |
|
398 | 407 | if(!msGesture){
|
399 |
| - el.addEventListener('touchstart', onTouchStart, false); |
400 |
| - |
401 |
| - function onTouchStart(e) { |
| 408 | + onTouchStart = function(e) { |
402 | 409 | if (slider.animating) {
|
403 | 410 | e.preventDefault();
|
404 | 411 | } else if ( ( window.navigator.msPointerEnabled ) || e.touches.length === 1 ) {
|
|
423 | 430 | el.addEventListener('touchmove', onTouchMove, false);
|
424 | 431 | el.addEventListener('touchend', onTouchEnd, false);
|
425 | 432 | }
|
426 |
| - } |
| 433 | + }; |
427 | 434 |
|
428 |
| - function onTouchMove(e) { |
| 435 | + onTouchMove = function(e) { |
429 | 436 | // Local vars for X and Y points.
|
430 | 437 |
|
431 | 438 | localX = e.touches[0].pageX;
|
|
445 | 452 | slider.setProps(offset + dx, "setTouch");
|
446 | 453 | }
|
447 | 454 | }
|
448 |
| - } |
| 455 | + }; |
449 | 456 |
|
450 |
| - function onTouchEnd(e) { |
| 457 | + onTouchEnd = function(e) { |
451 | 458 | // finish the touch by undoing the touch session
|
452 | 459 | el.removeEventListener('touchmove', onTouchMove, false);
|
453 | 460 |
|
|
467 | 474 | startY = null;
|
468 | 475 | dx = null;
|
469 | 476 | offset = null;
|
470 |
| - } |
| 477 | + }; |
| 478 | + |
| 479 | + el.addEventListener('touchstart', onTouchStart, false); |
471 | 480 | }else{
|
472 | 481 | el.style.msTouchAction = "none";
|
473 | 482 | el._gesture = new MSGesture();
|
|
1126 | 1135 | // Special properties
|
1127 | 1136 | controlsContainer: "", //{UPDATED} jQuery Object/Selector: Declare which container the navigation elements should be appended too. Default container is the FlexSlider element. Example use would be $(".flexslider-container"). Property is ignored if given element is not found.
|
1128 | 1137 | manualControls: "", //{UPDATED} jQuery Object/Selector: Declare custom control navigation. Examples would be $(".flex-control-nav li") or "#tabs-nav li img", etc. The number of elements in your controlNav should match the number of slides/tabs.
|
| 1138 | + customDirectionNav: "", //{NEW} jQuery Object/Selector: Custom prev / next button. Must be two jQuery elements. In order to make the events work they have to have the classes "prev" and "next" (plus namespace) |
1129 | 1139 | sync: "", //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care.
|
1130 | 1140 | asNavFor: "", //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider
|
1131 | 1141 |
|
|
0 commit comments