Javascript / Jquery:用on替换click

时间:2012-10-23 18:22:52

标签: jquery click

我需要为动态添加的链接添加点击处理程序。我已经读过JQuery的click方法不适用于动态创建的元素(实际上我无法使它工作)。

我有以下代码:

$(this).find(ops.editbuttonselector).click(function(e) {

由于.live方法现已弃用,我需要使用.on。 根据这个thread和我对jquery(有限)的不足,我应该这样做:

selector = $(this).find(ops.editbuttonselector) 
$(document).on('click', selector, function(e) {

但这也没有用,实际上之前工作的东西(现有元素)也停止了工作。

有人可以指出我正确的语法。

提前致谢

2 个答案:

答案 0 :(得分:3)

.on()的第二个参数是选择器字符串,而不是jQuery对象:

$(document).on('click', ops.editbuttonselector, function(e) {

答案 1 :(得分:1)

由于您使用$(this)绑定它,我假设您在将元素添加到DOM后尝试添加处理程序..如果是这种情况,那么您可以简单地执行以下操作,

//below is direct binding which is better than delegated event
$(this).find(ops.editbuttonselector).on('click', function(e) {

否则如果this是执行下面行时存在于DOM中的父元素,

//this is delegated event binding method
$(this).on('click', ops.editbuttonselector, function(e) {

否则您可以.on到DOM或文档对象中可能存在的最近父级。

您可以详细了解何时以及为何应该绑定到文档对象https://stackoverflow.com/a/12824698/297641