jQuery绑定事件根本不起作用

时间:2012-03-08 05:28:00

标签: jquery html

我尽我所能来实现它,但没有成功。

问题是我在运行时创建了一个元素,然后将一个函数绑定到该元素,如下面的代码:

$(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!');
}

在HTML代码中,我有一个如下标签:

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

我的第二次尝试

$(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>

3 个答案:

答案 0 :(得分:3)

您不希望在代码中的某个位置运行该功能,因此请删除()

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

如果你正在使用jQuery 1.7+,你应该使用.on()

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

或直接使用.click()处理程序:

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

答案 1 :(得分:3)

更改

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

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

或(从jQuery 1.7开始):

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

有两点需要注意:

  1. 我将func_name()更改为func_name。绑定处理程序时,您不希望调用函数 - 您只想引用它。
  2. 致电bind对您没有任何帮助,因为#runtime在您点击.rem之后才会存在。这就是为什么你需要liveon(取决于你的jQuery版本)。
  3. 只是为了衡量标准:here's一个很好的参考,说明你为什么要使用jQuery.on

答案 2 :(得分:0)

试试这个

$(document).ready(function(){

    $('.rem').click(function(){
        $('<a id="runtime" href="javascript:void(0);">runtime</a>').bind('click',func_name).appendTo("body");
    });
});//End of doc
function func_name(){
    alert('I got it!');
}

由于您在创建对象之前绑定了对象,因此无法获得所需的结果。