将单击处理程序绑定到动态元素

时间:2015-02-10 02:42:37

标签: javascript jquery onclick

当我动态创建新链接时,我无法捕捉到点击事件

$("#div").html("<a href="#" id="new">new link</a>);

$("#new").click(function(e) { //doesn't catch
   e.preventDefault();
   alert('click');
}

如何将处理程序绑定到动态元素?

3 个答案:

答案 0 :(得分:3)

实际上,这对我来说很好:updated fiddle

您的原始代码中存在许多语法错误。

$("#div").html("<a href='#' id='new'>new link</a>");
fixed quotes here ------^^^                      ^
fixed missing end quote here --------------------^

// works fine!
$("#new").click(function(e) {
    e.preventDefault();
    alert('click');
});

答案 1 :(得分:1)

您无法通过ID引用创建的元素,因为它尚未添加到DOM中,而jQuery在DOM中搜索ID。而是保存对元素的引用并将单击附加到该元素。

var div = $('<div>').attr('id', 'div');
var link = $('<a>')
  .attr('href', '#')
  .attr('id', 'new')
  .on('click', function(e) {
    e.preventDefault();
    alert('click');
  })
  .appendTo(div);

答案 2 :(得分:-2)

You should try this post out

看起来它会回答你的问题。

总结一下,试试

$(".test").click(function () {
$.ajax({ url: 'http://.....your path...../accounts/index',
    data: {test:1},
    type: 'post',
    success: function(output) {
        //your code
             }
        }); 
});