How to overwrite jquery event handlers

后端 未结 6 2010
逝去的感伤
逝去的感伤 2020-12-13 01:31

I\'ll try to explain the problem with a simple code.

var fireClick = function() { alert(\'Wuala!!!\') };

$(\'#clickme\').click(fireclick);
$(\'#clickme\').c         


        
相关标签:
6条回答
  • 2020-12-13 01:55

    You may use the jQuery function unbind to remove the first event:

    var fireClick = function() { alert('Wuala!!!') };
    
    $('#clickme').click(fireclick);
    $('#clickme').unbind('click', fireClick); // fireClick won't fire anymore...
    $('#clickme').click(fireclick); // ...but now it will
    
    0 讨论(0)
  • 2020-12-13 01:58
    $(document).off('click', '#clickme').on('click', '#clickme', fireclick);
    
    0 讨论(0)
  • 2020-12-13 02:04

    You should use setInterval. The problem is that you cannot have two alerts pop at the same time. First one has to close first or the second one can't appear on screen...

    0 讨论(0)
  • 2020-12-13 02:14

    I would try to eliminate the extra calls, but short of tyhat you could make sure to call both of these each time:

    $('#clickme').unbind('click', fireclick);
    $('#clickme').click(fireclick);
    
    0 讨论(0)
  • 2020-12-13 02:16

    As of jQuery 1.7 you should be using off to remove event handlers and on to add them, though you can still use the click shorthand.

    $('#clickme').off('click').on('click', fireclick);
    $('#clickme').off().on('click', fireclick);
    

    Original answer:

    If you want to replace all click handlers, call unbind first without a function argument. If you want to replace all event handlers, don't specify the event type.

    $('#clickme').unbind('click').click(fireclick);
    $('#clickme').unbind().click(fireclick);
    
    0 讨论(0)
  • 2020-12-13 02:17

    Use a namespace to make sure you don't remove any other listeners:

    $('#clickme').off('click.XXX').on('click.XXX', fireclick);
    

    As long as no other code uses XXX, you can be sure that you have not messed up some other behaviour that you weren't aware of.

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