Here’s a post that might help problems with Sammy routes, callbacks, and event handlers using jQuery, especially the “live” function.
I have an input form with submit buttons like:
<form> <input type="submit" name="what" value="SomeCommand" /> <input type="submit" name="what" value="DifferentCommand" /> </form>
This didn’t play well with Sammy, as it doesn’t load the value of what into it’s params hash. So, I did a work around like:
// hack to allow sammy to access the 'what' param $('form input[type=submit]').live('click', function(){ var submit = $(this), form = submit.parents('form'); form.find('input[name=what][type=hidden]').val(submit.val()); });
I’m not sure why I originally chose to use “live.” It could’ve been that I was building DOM dynamically using jquery-tmpl. In Firefox and Chrome, this worked as expected. In IE, the Sammy route handler would fire before the click handler above! So, I changed the code to use the non-live version.
$('form input[type=submit]').click(function(){ // changed ... });