我需要为动态添加的链接添加点击处理程序。我已经读过JQuery的click方法不适用于动态创建的元素(实际上我无法使它工作)。
我有以下代码:
$(this).find(ops.editbuttonselector).click(function(e) {
由于.live方法现已弃用,我需要使用.on。 根据这个thread和我对jquery(有限)的不足,我应该这样做:
selector = $(this).find(ops.editbuttonselector)
$(document).on('click', selector, function(e) {
但这也没有用,实际上之前工作的东西(现有元素)也停止了工作。
有人可以指出我正确的语法。
提前致谢
答案 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