jQuery live to on, with $(this)



我正在更新我的脚本,以便它们在jQuery 1.9+中工作

live被删除,我必须将其转换为on语法。jQuery文档中有一些示例。文档给出:

$(selector).live(events, data, handler); // jQuery 1.3+
$(document).on(events, selector, data, handler); // jQuery 1.7

所以 $("a").live("click", handler) schould 转换为 $(document).on("click","a", handler) 等等。

但是当我没有selector时如何转换?就我而言,这是在插件中。

$(this).live("click", handler)

这是行不通的:

$(document).on("click",$(this), handler) 

--编辑

我需要授权,所以bind不是解决方案。这是在插件中使用,其中我的代码是

elem.live("click", handler) ,其中 elem 有时是选择器,有时是$(this)。我无法控制这一点。

只需使用

$(this).on("click", handler);

$(this).click(handler);

.on 方法可以按如下方式使用:

$(document).on("click", function (e) {
    // handle the click
});

此外,在您拥有的代码中,$(this)将是文档本身,而不是您希望单击绑定到的内容。

我通过检查 jQuery migrate 插件的源代码找到了答案

它正在寻找 .context 属性。问题的答案是

$(document).on("click", $(this.context), handler) 

最新更新