Oddly enough I'm actually building a timeline tool for the Intro to European History I'm teaching this fall. Basically I'm going to crowdsource a European timeline between 400AD-1700AD in the classroom.
I've looked a few things - yes, SIMILE is great and the de facto standard. But as an historian the date handling rubs me the wrong way - perhaps I'm reading the code wrong, but it requires a valid JS Date to work. I want more ambiguity and flexibility when it comes to date parts. I also wanted to place the entire timeline within a custom-designed course website rather than try and handle it with moodle, wordpress, drupal, etc. or even WebCT/Blackboard like 'things' (don't know what else to call them). SIMILE is ideal for most of this. That said, I decided to try something else.
Here's a link of some useful jQuery based timelines I looked at: http://www.tripwiremagazine.com/2013/06/jquery-timeline-plugins.html
I wanted something simple that could handle quite a bit of student-produced data. Timeliner.js at TechnoTarek looked about right, but I was really going for something horizontal and with a nice nav bar like SIMILE - so I went with VeriteCo's TimelineJS http://timeline.verite.co/). It can handle BC dates as well as AD dates.
There are several advantages with this - first is being able to embed a timeline right away using their site and a published googlespreadsheet. The other is the code is pretty straightforward. I'm in the process of adapting it to run off of ajax-generated
JSON from a MYSQL DB. The only thing is the viewable space for each item - though there's media handling (not using it for other reasons in my course), there's not enough place for a description of the event itself. So I'm using a dialog box to display the full contents, while the timeline itself has a teaser.
The big disadvantage is that TimelineJS uses LazyLoad to create the 'story' - meaning that I'm stuck at the moment with an awkward setTimeout after the ajax / rendering to make further jQuery-based selections. $.ajaxStop() doesn't work because of the small (but significant) space in between the completion of the ajax request and the rendering from JSON into html elements. If anyone has suggestions on how to add a callback (was thinking .always or someting .done / .when-.then - but these are all ajax, and I don't have time to crack the minified js and insert a callback variable...) - without too much trouble, please let me know.