Всем привет
Дергается сайдбар, когда пытаешь водить по нему, из за скрипта на галерею( нажимаешь на картинку, открывается окно с картинкой).
Сразу скажу, скрипт подключается другим скриптом вот так
/* TouchTouch Gallery
========================================================*/
;(function ($) {
var o = $('.thumb');
if (o.length > 0) {
include('js/jquery.touch-touch.js');
$(document).ready(function () {
o.touchTouch();
});
}
})(jQuery);
Что может быть не так?
Вот код галереи
/**
* @name jQuery touchTouch plugin
* @author Martin Angelov
* @version 1.0
* @url http://tutorialzine.com/2012/04/mobile-touch-gallery/
* @license MIT License
*/
(function () {
/* Private variables */
var overlay = $('<div id="galleryOverlay">'),
slider = $('<div id="gallerySlider">'),
prevArrow = $('<a id="prevArrow"></a>'),
nextArrow = $('<a id="nextArrow"></a>'),
overlayVisible = false;
/* Creating the plugin */
$.fn.touchTouch = function () {
var placeholders = $([]),
index = 0,
allitems = this,
items = allitems;
// Appending the markup to the page
overlay.hide().appendTo('body');
slider.appendTo(overlay);
// Creating a placeholder for each image
items.each(function () {
placeholders = placeholders.add($('<div class="placeholder">'));
});
// Hide the gallery if the background is touched / clicked
slider.append(placeholders).on('click', function (e) {
if (!$(e.target).is('img') || !$(e.target).hasClass('iframe')) {
hideOverlay();
}
});
// Listen for touch events on the body and check if they
// originated in #gallerySlider img - the images in the slider.
$('body').on('touchstart', '#gallerySlider img, #gallerySlider .iframe', function (e) {
var touch = e.originalEvent,
startX = touch.changedTouches[0].pageX;
$("body").on('touchmove', function (e) {
e.preventDefault();
touch = e.originalEvent.touches[0] ||
e.originalEvent.changedTouches[0];
if (touch.pageX - startX > 10) {
slider.off('touchmove');
showPrevious();
}
else if (touch.pageX - startX < -10) {
slider.off('touchmove');
showNext();
}
});
// Return false to prevent image
// highlighting on Android
return false;
}).on('touchend', function () {
$("body").off('touchmove');
});
// Listening for clicks on the thumbnails
items.on('click', function (e) {
e.preventDefault();
var $this = $(this),
galleryName,
selectorType,
$closestGallery = $this.parent().closest('[data-gallery]');
// Find gallery name and change items object to only have
// that gallery
//If gallery name given to each item
if ($this.attr('data-gallery')) {
galleryName = $this.attr('data-gallery');
selectorType = 'item';
//If gallery name given to some ancestor
} else if ($closestGallery.length) {
galleryName = $closestGallery.attr('data-gallery');
selectorType = 'ancestor';
}
//These statements kept seperate in case elements have data-gallery on both
//items and ancestor. Ancestor will always win because of above statments.
if (galleryName && selectorType == 'item') {
items = $('[data-gallery=' + galleryName + ']');
} else if (galleryName && selectorType == 'ancestor') {
//Filter to check if item has an ancestory with data-gallery attribute
items = items.filter(function () {
return $(this).parent().closest('[data-gallery]').length;
});
}
// Find the position of this image
// in the collection
index = items.index(this);
showOverlay(index);
showImage(index);
// Preload the next image
preload(index + 1);
// Preload the previous
preload(index - 1);
});
// If the browser does not have support
// for touch, display the arrows
overlay.append(prevArrow).append(nextArrow);
prevArrow.click(function (e) {
e.preventDefault();
showPrevious();
});
nextArrow.click(function (e) {
e.preventDefault();
showNext();
});
// Listen for arrow keys
$(window).bind('keydown', function (e) {
if (e.keyCode == 37) {
showPrevious();
}
else if (e.keyCode == 39) {
showNext();
}
else if (e.keyCode == 27) { //esc
hideOverlay();
}
});
/* Private functions */
function showOverlay(index) {
// If the overlay is already shown, exit
if (overlayVisible) {
return false;
}
// Show the overlay
overlay.show();
setTimeout(function () {
// Trigger the opacity CSS transition
overlay.addClass('visible');
}, 100);
// Move the slider to the correct image
offsetSlider(index);
// Raise the visible flag
overlayVisible = true;
}
function hideOverlay() {
// If the overlay is not shown, exit
if (!overlayVisible) {
return false;
}
// Hide the overlay
overlay.hide().removeClass('visible');
overlayVisible = false;
//Clear preloaded items
$('.placeholder').empty();
//Reset possibly filtered items
items = allitems;
}
function offsetSlider(index) {
// This will trigger a smooth css transition
slider.css('left', (-index * 100) + '%');
}
// Preload an image by its index in the items array
function preload(index) {
setTimeout(function () {
showImage(index);
}, 1000);
}
// Show image in the slider
function showImage(index) {
// If the index is outside the bonds of the array
if (index < 0 || index >= items.length) {
return false;
}
var href = items.eq(index).attr('href');
if (href.match(/(\.jpg)|(\.png)|(\.gif)/i)) {
// Call the load function with the href attribute of the item
loadImage(href, function () {
placeholders.eq(index).html(this);
});
} else {
loadIframe(href, function () {
placeholders.eq(index).html(this);
});
}
}
// Load the image and execute a callback function.
// Returns a jQuery object
function loadImage(src, callback) {
var img = $('<img/>').on('load', function () {
callback.call(img);
});
img.attr('src', src);
}
function loadIframe(src, callback) {
var iframe = $("<div/>", {"class": "iframe-wrap"}).append($("<div/>", {"class": "iframe"}).append($('<iframe/>', {
"src": src,
"allowfullscreen": 'allowfullscreen'
})));
callback.call(iframe);
}
function showNext() {
// If this is not the last image
if (index + 1 < items.length) {
index++;
offsetSlider(index);
preload(index + 1);
}
else {
// Trigger the spring animation
slider.addClass('rightSpring');
setTimeout(function () {
slider.removeClass('rightSpring');
}, 500);
}
}
function showPrevious() {
// If this is not the first image
if (index > 0) {
index--;
offsetSlider(index);
preload(index - 1);
}
else {
// Trigger the spring animation
slider.addClass('leftSpring');
setTimeout(function () {
slider.removeClass('leftSpring');
}, 500);
}
}
};
})(jQuery);