将livequery转换为live/delegate /?

Gre*_*egg 5 jquery livequery

搜索没有透露我的问题的解决方案,所以在这里问.我一直在使用livequery()一段时间与live()结合使用.通常,我将live()用于已知事件(如click),但使用livequery触发特定选择器并应用插件.例如...

$('#childDomains').livequery(function() {
  var element = $(this);
  element.jqGrid({
    // plugin initialization here
  });
});
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法使用live()/ delegate()或其他一些我不知道的酷jQuery功能做同样的事情.我试图减轻我的依赖负载,我注意到自2010年2月至2010年以来没有更新livequery.

更新:我想我不够清楚.我有一个页面使用jqGrid并将TABLE元素转换为jqGrid Ajax数据网格.没有真正的点击事件发生这种情况.该表所在的页面是通过ajax加载的,只要DOM看到$("#childDomains"),它就应该将jqGrid插件应用于该元素.就像我的livequery示例一样.

根据我的理解,到目前为止,我不相信没有实时查询这是可能的,但我想要求确认.

Sea*_*ean 4

不,没有明显更好的方法可以使用 jQuery 来做到这一点;我想说 livequery 是目前最好的方法。

这就是说还有其他可能的方法。这里有人推出了自己的轮询代码来检测元素何时插入到 DOM 中。您可以调整这一点,但据我所知,livequery 已经为您做到了这一点。

另一种方法是监听DOMNodeInserted事件,如此处所述但由于性能较差, W3C 3 级事件规范已弃用这种方法。它也不兼容 IE

这个问题对监视DOMNodeInserted事件以及挂钩任何可以更改 DOM 的方法的替代方案进行了一些很好的讨论。(它有点旧,但根据我的研究,还没有任何改变)。

总之,继续使用livequery。

另请注意,从 jQuery 1.7 开始,.live()(已弃用)和 .delegate()(已取代)应替换为 .on()(并将 .die() 替换为.off())。不过,新方法并没有引入任何可以解决 livequery 依赖性的内容。