this.singleSelectDataTable.subscribe("rowSelectEvent", scrollme); . . . function scrollme(el, rec) { elScroll = el.el.parentNode.parentNode.parentNode; if (el.el.offsetTop > (elScroll.offsetHeight + elScroll.scrollTop - (el.el.offsetHeight * 3))) //below visible area { goTop = el.el.offsetTop - elScroll.offsetHeight + (el.el.offsetHeight * 3); } else if(el.el.offsetTop < (elScroll.scrollTop + (el.el.offsetHeight * 2))) //above visible area { goTop = el.el.offsetTop - (el.el.offsetHeight * 2);; } if (goTop < 0) goTop = 0; var anim = new YAHOO.util.Scroll(elScroll, { scroll: { to: [0, goTop] } }); anim.animate(); }