user367134
user367134

Reputation: 942

jquery onclick click event

I have div which has an onlcick event. Now when i click the div i want to change its onlick function with .click attribute of jquery. I am able to change it dynamically, but when i apply it the new event also gets fired. Is there any work around so that the new is not fired but just applied to the div with new function? Here is what i am trying to do

i have a div

<script type="text/javascript">

function testMe(data)
{
   alert(data);
   $('#testMe').unbind('click');
   $('#testMe').click(function(){ testMe('2');  });
}

</script>
    <div id='testMe' onclick='testMe(1)' >click on me, I will disappear.</div>

when I execute theabove code i still get value 1 om alert box THANKS EveryOne

Also i tried the below code but it is not working for me

 function testMe(data)
{
   alert(data);
   $('#testMe').unbind('click');
   $('#testMe').click( testMe(2) );
}

Though the code is updating the onlick event from 'testMe(1)' to 'testMe(2)' but it continuously alerts value 2. The work around this problem is traditional JS script code as:

 document.getElementById('testMe').onclick =  testMe(2) ;

And its working without alerts.

Upvotes: 3

Views: 20995

Answers (4)

DoXicK
DoXicK

Reputation: 4812

use the 'one' function

$('element').one('click',function()
{
    alert('old click handler');
    $(this).click(function(){
        alert('new click handler, yarrrr');
    });
});

Upvotes: 6

castis
castis

Reputation: 8223

maybe try this.

$('div').click(function(){
    $(this).unbind('click');
    $(this).click(function(){
        // new click function here
    });
});

Upvotes: 2

Mark Baijens
Mark Baijens

Reputation: 13222

unbind old functionality first. Than bind the new event to it should do the trick.

Do you mean the the event is also fired when you bind it to the element?

Upvotes: 0

Pete Amundson
Pete Amundson

Reputation: 900

Try using the bind event http://api.jquery.com/bind/

If you want to remove the previous event use the unbind event: Best way to remove an event handler in jQuery?

Upvotes: 0

Related Questions