Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery bind event does not work at all

Tags:

html

jquery

I did everything I could to make it happen, but without success.

The problem is that I create an element on runtime then bind a function to the element like the following code:

$(document).ready(function() {

  $('.rem').click(function() {
    $("body").append('<a id="runtime" href="javascript:void(0);">runtime</a>');
  });

  $('#runtime').bind('click', func_name());

});

//End of doc
function func_name() {
  alert('I got it!');
}

In the HTML code I have a label like below:

<div id="body">
  <label class="rem">click me</label>
</div>

My second attempt

$(document).ready(function() {

  $('.rem').click(function() {
    $("body").append('<a id="runtime" href="javascript:void(0);">runtime</a>');
  });

  $('#runtime').bind('click',function() {
    alert($(this).text());
  });

});
//End of doc

HTML code:

<div id="body">
  <label class="rem">click me</label>
</div>
like image 883
Alireza Avatar asked Aug 15 '26 05:08

Alireza


2 Answers

Change

$('#runtime').bind('click',func_name());

to

$('#runtime').live('click',func_name); 

or (as of jQuery 1.7):

$('#runtime').on('click',func_name); 

Two things to note:

  1. I changed func_name() to func_name. You don't want to call the function when you bind the handler - you just want to reference it.
  2. Calling bind won't do you any good, because #runtime doesn't exist until after you've clicked .rem. That's why you need either live or on (depending upon your jQuery version).

And just for good measure: here's a good reference on why you should be using jQuery.on anyway.

like image 139
Chris Tonkinson Avatar answered Aug 16 '26 19:08

Chris Tonkinson


You don't want to run the function at the point in the code, so remove the ():

$('#runtime').bind('click', func_name);

If you're using jQuery 1.7+, though, you should either use .on():

$('#runtime').on('click', func_name);

or use a .click() handler directly:

$('#runtime').click(func_name);
like image 30
kevinji Avatar answered Aug 16 '26 20:08

kevinji



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!