我制作了一个简单的 jQuery 按钮小部件(插件),它的初始化如下:
var cmd = $(".tButton");
cmd.tButton();
有没有办法将 .live 用于所有未来的按钮(通过 ajax 加载)?
谢谢
你可以,但要小心你在做什么。如果您想自动重新运行您的插件连接代码,那么$.fn.live()
这不是您想要的。
如果您要附加一些事件处理程序,那么您可以,但您需要将其附加到主集合,如下所示:
$.fn.yourPlugin = function(){
this.live('click', function(){...});
}
这个问题的答案是否定的,尽管如果您所做的只是处理事件,dcneiner 的答案非常好。如果您想进行其他一些修改,那您就不走运了。
live 通过将事件处理程序附加到文档元素来工作。由于事件在 js 中冒泡(它们可以由 clicked/mouseover'd/etc 元素的父级处理),文档有机会处理来自页面上每个元素的事件。
不幸的是,据我所知,创建元素时没有事件,因此创建元素时您无法自动运行函数。jQuery 的 live 不知道新按钮的存在,直到它被单击/鼠标悬停/等。