From 6554eabf9dc9f160c0934fefa6f6b33b6e608027 Mon Sep 17 00:00:00 2001 From: Kjetil Thuen Date: Wed, 3 Jul 2013 10:54:11 +0200 Subject: [PATCH] Improved scrolling roboustness. --- index.html | 9 ++++----- listPeek.js | 16 ++++++++++++---- utils.js | 7 ++----- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/index.html b/index.html index ace94bc..c3504fb 100644 --- a/index.html +++ b/index.html @@ -5,8 +5,10 @@ ScrollMagnifyer + @@ -48,16 +50,13 @@
- - + +
diff --git a/listPeek.js b/listPeek.js index 4dc04dc..6c2e394 100644 --- a/listPeek.js +++ b/listPeek.js @@ -3,13 +3,14 @@ var centerOfHeadline = 0; var focusedListElement; var target_top = 0; var scrollVal; +var currently_selected_element = null; var initialize_list_peek = function() { target_top = $('#content').position().top; $('#target').css({top: target_top}); horizontalCenter = Math.floor(window.innerWidth/2); centerOfHeadline = $('#target').offset().top - $(window).scrollTop() + ($('#target').height() / 2); - set_selected_element($('#studies_list li:first-child').get()); + set_selected_element(); }; var register_event_handlers = function() { @@ -33,9 +34,14 @@ var register_event_handlers = function() { $('#studies_list li').click(function() { set_selected_element($(this).get()); }); + + $(window).resize(function() { + set_selected_element(currently_selected_element); + }); }; var show_expanded_info = function() { + console.log("expanding"); var listElem = $('#studies_list li.selected'); $('html:not(:animated),body:not(:animated)').animate({scrollTop: scrollVal}, 'fast', function() { $('#target').animate({height: listElem.height()}, 'fast', function() { @@ -60,17 +66,19 @@ var find_and_select_element = function() { }; var set_selected_element = function (element) { + if (!element) { + element = $('#studies_list li:first-child').get(); + } $('#expander:visible').slideUp(); $('ul#studies_list li').removeClass("selected"); if (element) { var listElem = $(element).closest('li'); - + currently_selected_element = listElem; if (listElem.is("LI")) { listElem.addClass('selected'); scrollVal = listElem.offset().top - $('#studies_list').position().top; - //debounce(show_expanded_info, 500, false)(); - show_expanded_info(); + debounce(show_expanded_info, 500, false)(); } } else { $('#expander').hide(); diff --git a/utils.js b/utils.js index a22bc21..412f9c7 100644 --- a/utils.js +++ b/utils.js @@ -39,7 +39,7 @@ inScroll = false; } else { inScroll = true; evt.type = 'scrollstart'; - jQuery.event.handle.apply(_self, _args); + $(this).trigger(evt.type, _args); } timer = setTimeout( function(){ @@ -78,11 +78,10 @@ inScroll = false; inScroll = false; timer = null; evt.type = 'scrollstop'; - jQuery.event.handle.apply(_self, _args); + $(this).trigger(evt.type, _args); }, special.scrollstop.latency); } - }; jQuery(this).bind('scroll', handler).data(uid2, handler); @@ -92,6 +91,4 @@ inScroll = false; jQuery(this).unbind( 'scroll', jQuery(this).data(uid2) ); } }; - })(); - -- 2.26.2