微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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依赖关系的方法.

原文地址:https://www.jb51.cc/jquery/428013.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐