我正在查看旧代码。我发现对于使用ajax添加的元素,有很多livequery代码。新版本的jQuery是否不再需要livequery?有人知道具体是哪个版本后不再需要吗?
$("#somediv").livequery(function(){
$(this).click(function(){
});
});
我正在查看旧代码。我发现对于使用ajax添加的元素,有很多livequery代码。新版本的jQuery是否不再需要livequery?有人知道具体是哪个版本后不再需要吗?
$("#somediv").livequery(function(){
$(this).click(function(){
});
});
livequery
是与 .live()
完全不同的概念。
.live()
方法使用 事件委托 处理发生在页面上任何地方的事件。
livequery
会在 DOM 改变时 (通过 jQuery 方法) 调用处理程序。
对于下面的示例,当添加具有 class="some_class"
的元素到 DOM (或将该类添加到元素) 时,第一个处理程序将运行。 当移除时,运行第二个处理程序。
$('.some_class').livequery( function() {
// apply a plugin to the element
$(this).somePlugin();
}, function() {
// clean up after the element was removed
});
实际上很少需要使用livequery
,但在那种罕见的情况下,如果您需要响应DOM变化,并且无法控制引起这些变化的jQuery代码,则可以使用它。
livequery
工作原理的描述是不正确的。它确实使用一个函数包装jQuery方法,在调用原始方法之前调用内部代码。因此,当调用方法时,它会根据提供的原始选择器执行DOM选择,并在发现新元素时应用回调函数。因此,并没有在每个时间段内轮询所有DOM元素。 - user113716$('#obj').livequery('click', function() { ... });
$('#obj').livequery(function() { ... });
$('body').on('click', '#obj', function() { ... });
$('body').on('DOMNodeInserted','#obj', function() { ... });
DOMNodeInserted
,那么你要么正在构建一个复杂的模板系统,要么你做错了。如果是前者,那么只需构建一个简单的模板系统即可。 - Raynos