How to bind, unbind and rebind (click) events in JQuery
Asked Answered
U

2

13

After asking the same question 2 weeks ago here, I finally found "the" solution. This is why I am answering my own question. ;)

HOW TO BIND, UNBIND AND REBIND EVENTS IN JQUERY?

Universalism answered 18/12, 2012 at 20:2 Comment(1)
Possible duplicate of jquery rebind() disable events for a specific time, then rebind themMuddy
U
13

And THIS is the perfect solution. (At least for me.)

$(document).on('click', 'a#button', function(){
    $(this).after('<span> hello</span>');
    $('span').fadeOut(1000);
});

$('a#toggle').toggle(
    function(){
        $(this).text('rebind');
        $('a#button').on('click.disabled', false);
    },
    function(){
        $(this).text('unbind');
        $('a#button').off('click.disabled');
    }
);

".on()" does it. NOTE: It is important to bind the event like you can see on line one! It does not work with .click() or …!

See the docs!

Here is a fiddle to try it and experiment with it!

Enjoy!

Universalism answered 18/12, 2012 at 20:2 Comment(5)
Why did you repost it if you already answered it on your original question?Thalassa
I guess because the other solution is also nice and useful! (Updated the old post)Universalism
Great answer! This certainly helped me temporarily disable a button's click event. And, for additional emphasis, the context of the click event should be how it is shown in the above answer!Carolynncarolynne
Question: why does this work? Are we enabling/disabling a 'disabled' property on the native click event?Carolynncarolynne
Important! For anyone looking into this, the .toggle() method was deprecated in jQuery 1.8 and removed in jQuery 1.9. (Source - jQuery.com)Fled
A
3

A simpler and short solution is to add a class to the object if you want to unbind it then remove this class to rebind ex;

$('#button').click( function(){
   if($(this).hasClass('unbinded')) return;
   //Do somthing
 });

$('#toggle').click(function(){
    $('#button').toggleClass('unbinded');
 });
Alow answered 7/1, 2016 at 21:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.