Jquery 使用函数和选择器时从.live迁移到.on

Jquery 使用函数和选择器时从.live迁移到.on,jquery,Jquery,可能是一个简单的答案,但我对jQuery的原理理解不够,无法解决这个问题 我有这个: $(".remove", document.getElementById(itemsAreaId)).live("click", function(){ 我想迁移到的。在上 我试过这么做 var selectedEls = $(".remove", document.getElementById(itemsAreaId)); $(document).on('click',selectedEls, fun

可能是一个简单的答案,但我对jQuery的原理理解不够,无法解决这个问题

我有这个:

$(".remove", document.getElementById(itemsAreaId)).live("click", function(){
我想迁移到的。在上

我试过这么做

var selectedEls = $(".remove", document.getElementById(itemsAreaId));
   $(document).on('click',selectedEls, function(e){
但它不起作用

有人解释我做错了什么吗

如果可能的话,为什么我的解决方案不起作用,我可以理解

非常感谢,

保罗

说明:

正如您所知,jQuery可以接受字符串甚至DOM元素作为其对象的构造函数,因此$document.getElementByIditemsAreaId将为您提供对元素的最快和最接近的访问。 .on'click','remove',function{} 当单击函数中附加了itemsareaid的元素中包含类remove的任何元素时,这个函数将调用函数e

使用$document将导致用户每次单击时检查事件;使用$+itemsAreaId的方法也会很慢。我们说的是毫秒,因为jQuery必须解析字符串才能检索DOM元素。

on的可选选择器。您正在为它提供一个jQuery对象selectedEls

相反,只需使用字符串选择器。直接删除。使用itemsAreaId而不是针对文档

如果要将文档作为目标,可以使用子体选择器以及itemsAreaId和.remove,如下所示

$(document).on('click', '#' + itemsAreaId + ' .remove', function ());

。。。但是最好将处理程序附加到尽可能靠近源的位置,因此首选第一个处理程序。

谢谢,这非常有用。很明显,现在你解释一下:-
$('#' + itemsAreaId).on('click', '.remove', function ());
$(document).on('click', '#' + itemsAreaId + ' .remove', function ());