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:
1 2 3 4 | < 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:
1 2 3 4 5 6 | // 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.
1 2 3 | $( 'form input[type=submit]' ).click( function (){ // changed ... }); |