我正在更新我的脚本,以便它们在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)