jquery – 将livequery转换为live / delegate /?

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

$('#childDomains').livequery(function() {
  var element = $(this);
  element.jqgrid({
    // plugin initialization here
  });
});

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

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

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

最佳答案
不,没有明显更好的方法来使用jQuery;我会说livequery是目前最好的方法.

这就是其他可行的方法. Here有人已经推出了自己的轮询代码来检测元素何时插入DOM.你可以调整它,但据我所知,livequery已经为你做了这个.

另一种方法是按照here概述监听DOMNodeInserted事件,但由于poor performance,这是deprecated in the W3C Level 3 Events Specification.它也是not IE compatible.

This question对监视DOMNodeInserted事件进行了一些很好的讨论,并且可以选择挂钩任何可以更改DOM的方法. (它有点旧,但从我的研究来看,没有任何改变).

总之,继续使用livequery.

另请注意,从jQuery 1.7 .live()(deprecated)和.delegate()(superseded)应替换为.on()(和.die()与.off()).新方法不会引入任何可以解决您的livequery依赖关系的方法.

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...