Unbind jQuery even handler

前端 未结 6 751
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-19 04:38

I try to answer this question a few minutes ago and prepared this example for myself :



        
相关标签:
6条回答
  • 2020-12-19 04:55

    As far as I can see in jQuery API documentation, unbind() has been deprecated: https://api.jquery.com/unbind/

    As of jQuery 3.0, .unbind() has been deprecated. It was superseded by the .off() method since jQuery 1.7, so its use was already discouraged.

    And off() method should be used instead.

    0 讨论(0)
  • 2020-12-19 05:04

    I ran into a similar issue before. What I concluded was that you can only unbind a method you have binded. Since trialmethod() was NOT binded through jquery, calling unbind on the method wouldnt work.

    Please let us know if you figure it out by any chance.

    Thanks.

    0 讨论(0)
  • 2020-12-19 05:07

    There is a bug with bind, unbind and form submit action :

    If you bind then unbind, and you want to submit your form, you cannot use $(form).submit(), BUT $(form INPUT[type=submit]).click() !

    0 讨论(0)
  • 2020-12-19 05:11

    You can unbind by removing the corresponding attribute:

     $('#aspnetForm').removeAttr('onsubmit');
    
    0 讨论(0)
  • 2020-12-19 05:12

    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.

    0 讨论(0)
  • 2020-12-19 05:16

    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()

    0 讨论(0)
提交回复
热议问题