【发布时间】:2011-12-02 07:06:30
【问题描述】:
我正在查看旧代码。我看到对于使用 ajax 添加的元素,有很多实时查询代码。较新版本的 jquery 不再需要 livequery 了吗?有谁知道在哪个版本之后不需要它?
$("#somediv").livequery(function(){
$(this).click(function(){
});
});
【问题讨论】:
-
是的,livequery 已经死了。这也是一种反模式
-
@Raynos 用什么代替它?到目前为止,我还没有找到符合其目的的示例。 .on 用于事件,唯一接近的 jquery 事件是 DOMNodeInserted,它没有广泛的浏览器支持。
-
@AaronLS 事件委托将解决您的问题。如果您需要
DOMNodeInserted,您要么构建一个复杂的模板系统,要么您做错了。如果是前者,那么只需构建一个简单的模板系统即可 -
@Raynos 真的吗?你只是做了一大堆无效的假设。我已经看到了 livequery 的大量有效用途,但还没有看到保留关注点分离的替代方案。在处理动态内容时确实存在初始化场景,特别是在单页应用程序中,它们与特定事件无关,因此事件委托不会解决问题。如果您不相信,请举一个例子。我以前遇到过“你做错了”的那种,你漏掉了任何可行的解决方案,因为你的目标是让别人失望。
-
@Raynos 这是一个用例——一个用户脚本。我不控制将元素插入页面的代码,但我希望我的脚本知道它们何时插入。我还没有看到任何其他方法来实现这一点。
标签: javascript jquery livequery