0

可能是一个简单的答案,但我对 jQuery 的原理还不够了解,无法解决。

我有这个:

$(".remove", document.getElementById(itemsAreaId)).live("click", function(){

我想迁移到.on()

我试着这样做

var selectedEls = $(".remove", document.getElementById(itemsAreaId));
   $(document).on('click',selectedEls, function(e){

但它不起作用。

有人解释我做错了什么吗?

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

非常感谢,

保罗

4

2 回答 2

5

的可选选择器on() 必须是字符串。您正在为它提供一个 jQuery 对象 ( selectedEls)。

相反,只需直接使用字符串选择器.remove。与其定位,不如document使用itemsAreaId

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

如果你想定位document,你可以使用后代选择器itemsAreaId.remove,像这样;

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

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

于 2013-05-18T15:53:36.093 回答
2
$(document.getElementById(itemsAreaId)).on('click', '.remove', function(e){}

说明

如您所知,jQuery 可以接受字符串甚至 DOM 元素作为其对象的构造函数,因此$(document.getElementById(itemsAreaId))将为您提供对元素的最快和最接近的访问。 当单击元素内具有类的任何元素(附加到哪个函数.on('click', '.remove', function(e) {} )时,此函数将调用函数(e) 。removeitemsAreaIdon

使用$(document)将导致每次用户点击时都会检查您的事件;同样的使用方式$('#' + itemsAreaId)会更慢(我们谈论的是毫秒),因为 jQuery 必须解析字符串来检索 DOM 元素。

于 2013-05-18T15:53:25.973 回答