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?

1

2 Answers 2

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!

Sign up to request clarification or add additional context in comments.

5 Comments

Why did you repost it if you already answered it on your original question?
I guess because the other solution is also nice and useful! (Updated the old post)
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!
Question: why does this work? Are we enabling/disabling a 'disabled' property on the native click event?
Important! For anyone looking into this, the .toggle() method was deprecated in jQuery 1.8 and removed in jQuery 1.9. (Source - jQuery.com)
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');
 });

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.