首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将livequery转换为live/delegate/?

将livequery转换为live/delegate/?
EN

Stack Overflow用户
提问于 2011-10-25 09:29:11
回答 1查看 1K关注 0票数 5

搜索没有显示出我的问题的解决方案,所以在这里提问。我将livequery()与live()结合使用已经有一段时间了。通常,我使用live()来处理已知的事件,比如click,但使用livequery来触发特定的选择器并应用插件。例如..。

代码语言:javascript
复制
$('#childDomains').livequery(function() {
  var element = $(this);
  element.jqGrid({
    // plugin initialization here
  });
});

我想知道是否有一种方法可以使用live() / delegate()或其他一些我不知道的很酷的jQuery特性来做同样的事情。我正在尝试减轻我的依赖负载,我注意到livequery自2010年2月以来就没有更新过。

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

到目前为止,根据我的理解,我不相信没有livequery这是可能的,但我想问一下,以确保。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-10 04:04:51

不,使用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依赖的问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7883747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档