Mohit Srivastava
Mohit Srivastava

Reputation: 1919

how to bind again the click event for the button

I have a button on which i am attaching a click event. I have to unbind it after i click on it, and later on in my code i need to bind that click event on it again. I tried binding it again but that does not works. I can't use jquery 'live'. Is there any way to create a custom bind function on click event and then again call it ?

$(".submitButton").click(function(e){
    //some functionality on click
    $(".submitButton").unbind('click');
});

//somewhere ahead in my code 
$(".submitButton").bind('click');

Apparently this isn't working. Is there any way to tackle this ?

Upvotes: 0

Views: 1886

Answers (4)

SivaRajini
SivaRajini

Reputation: 7375

You can use jQuery.one(). Please refer below code.

$(".submitButton").one('click', clickHandler);

The first form of this method is identical to .bind(), except that the handler is unbound after its first invocation.

you can call it or bind it whenever it necessary.

Upvotes: 0

Darin Dimitrov
Darin Dimitrov

Reputation: 1038730

Your .bind call doesn't seem correct. You haven't specified a callback.

So start by writing a function:

function handleButtonClick() {
    //some functionality on click
    $(this).unbind('click');
}

Notice that inside the handler I am unbinding $(this) which is the element being clicked and not all elements with class="submitButton". and then:

$('.submitButton').bind('click', handleButtonClick);

and then later when you want to rebind:

$('.submitButton').bind('click', handleButtonClick);

and so on.

Upvotes: 3

Anthony Grist
Anthony Grist

Reputation: 38345

When you use .bind() to bind an event handler it expects a function to be passed as well, since that's what will be executed when the event fires. Don't use an anonymous function, instead declare a named function and pass a reference to that when binding.

function handleClick(e){
    //some functionality on click
    $(".submitButton").unbind('click');
}

$(".submitButton").click(handleClick);

// somewhere else in your code (in reaction to some other event)
$(".submitButton").click(handleClick);

Upvotes: 2

klaasman
klaasman

Reputation: 897

define your listener somewhere else:

function clickHandler() {
    //some functionality on click
    $(".submitButton").unbind('click', clickHandler);
}

$(".submitButton").bind('click', clickHandler);

//somewhere ahead in my code 
$(".submitButton").bind('click', clickHandler);

Upvotes: 3

Related Questions