A while back I did a little hacking on iScroll 4, which I use quite a bit for PhoneGap based applications (though, it works nice for anything mobile except Windows phones. IE doesn’t like iScroll).
iScroll is becoming a bit less necessary (particularly after iOS 5 was released, which made some changes to mobile Safari), but I still use it for a couple of nice features. Â One feature I always feel is lacking – I can’t tell it to specifically scroll to an ID. Â I can define an element and do it that way, but it’s not quite as convenient. Â So, here’s a quick function at adds scrollToId functionality:
   scrollToId: function (el, time) {
    var that = this, pos;
    el = document.getElementById(el);
    if (!el) return;
    pos = that._offset(el);
    pos.left += that.wrapperOffsetLeft;
    pos.top += that.wrapperOffsetTop;
    pos.left = pos.left > 0 ? 0 : pos.left < that.maxScrollX ? that.maxScrollX : pos.left;
    pos.top = pos.top > that.minScrollY ? that.minScrollY : pos.top < that.maxScrollY ? that.maxScrollY : pos.top;
    time = time === undefined ? m.max(m.abs(pos.left)*2, m.abs(pos.top)*2) : time;
    that.scrollTo(pos.left, pos.top, time);
  },
Pop this between scrollToElement and scrollToPage in iscroll.js.
Yes, I could just do “myScroll.scrollToElement(document.getElementById(“top”))”, but myScroll.scrollToId(“top”) looks a little nicer when I’m whipping through a ton of code looking for something specific. Just a preference thing, really.
I post it here for a funny reason: I upgraded iScroll in a project, and then couldn’t figure out for about 30 minutes why it no longer scrolled properly. And then I had to hunt down my older version of the project… so, as not to loose it again, I popped it on here. Plus, if anyone else is wondering a good way of doing it… well, there you go 🙂
I’m sort of excited to see what the author does with iScroll 5 – I still find myself integrating it into PhoneGap / Cordova projects frequently.