Unbind jQuery even handler
The first unbind scenario doesn't work, because of jQuery's event model. jQuery stores every event handler function in an array that you can access via $("#foo").data('events')
. The unbind
function looks just for given function in this array. So, you can only unbind()
event handlers that were added with bind()
No one should ever mix their markup with their interaction code if they are using jQuery.
Add some javascript to the page like this:
$(function() {
$('#aspnetForm').bind('submit',function() {
trialMethod();
});
$('#btnTrial2').bind('click',function() {
$('#aspnetForm').unbind('submit');
});
$('#btnTrial2').bind('click',function() {
$('#aspnetForm').bind('submit', trialMethod2).unbind('submit');
});
});
Now, with that out of the way... Everything should work now (even though you will now be double-binding the #aspnetForm
before unbinding it completely when the second button is pressed). The problem was that the form was never really 'bound' to begin with. You can unbind onsubmit
parameters in the markup.
You can unbind by removing the corresponding attribute:
$('#aspnetForm').removeAttr('onsubmit');