Skip to content

Commit

Permalink
Filter children to slides only when determining number of slides
Browse files Browse the repository at this point in the history
When using MVC frameworks (Ember) to generate the HTML, additional
`<script>` nodes are inserted inside the `.slide-group` element. These
extra nodes get returned by `slider.children`, causing an incorrect
number of slides to be calculated, and hence when scrolling to the end
of the slides, you scroll into nothingness.

This patch counts only the `.slide` nodes within the slider to get the
correct slide count.
  • Loading branch information
diazruy committed Nov 20, 2014
1 parent c26816b commit 8a08039
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions js/sliders.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,27 +47,29 @@
};

var setSlideNumber = function (offset) {
var slideCount = slider.querySelectorAll('.slide').length;
var round = offset ? (deltaX < 0 ? 'ceil' : 'floor') : 'round';
slideNumber = Math[round](getScroll() / (scrollableArea / slider.children.length));
slideNumber = Math[round](getScroll() / (scrollableArea / slideCount));
slideNumber += offset;
slideNumber = Math.min(slideNumber, 0);
slideNumber = Math.max(-(slider.children.length - 1), slideNumber);
slideNumber = Math.max(-(slideCount - 1), slideNumber);
};

var onTouchStart = function (e) {
slider = getSlider(e.target);
var slideCount = slider.querySelectorAll('.slide').length;

if (!slider) {
return;
}

var firstItem = slider.querySelector('.slide');

scrollableArea = firstItem.offsetWidth * slider.children.length;
scrollableArea = firstItem.offsetWidth * slideCount;
isScrolling = undefined;
sliderWidth = slider.offsetWidth;
resistance = 1;
lastSlide = -(slider.children.length - 1);
lastSlide = -(slideCount - 1);
startTime = +new Date();
pageX = e.touches[0].pageX;
pageY = e.touches[0].pageY;
Expand Down

0 comments on commit 8a08039

Please sign in to comment.