搜索没有透露我的问题的解决方案,所以在这里问.我一直在使用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示例一样.
根据我的理解,到目前为止,我不相信没有实时查询这是可能的,但我想要求确认.
不,没有明显更好的方法可以使用 jQuery 来做到这一点;我想说 livequery 是目前最好的方法。
这就是说还有其他可能的方法。这里有人推出了自己的轮询代码来检测元素何时插入到 DOM 中。您可以调整这一点,但据我所知,livequery 已经为您做到了这一点。
另一种方法是监听DOMNodeInserted事件,如此处所述,但由于性能较差, W3C 3 级事件规范已弃用这种方法。它也不兼容 IE。
这个问题对监视DOMNodeInserted事件以及挂钩任何可以更改 DOM 的方法的替代方案进行了一些很好的讨论。(它有点旧,但根据我的研究,还没有任何改变)。
总之,继续使用livequery。
另请注意,从 jQuery 1.7 开始,.live()(已弃用)和 .delegate()(已取代)应替换为 .on()(并将 .die() 替换为.off())。不过,新方法并没有引入任何可以解决 livequery 依赖性的内容。
| 归档时间: |
|
| 查看次数: |
1022 次 |
| 最近记录: |