可能是一个简单的答案,但我不明白jQuery的原理足以解决它。
我有这个:
$(".remove", document.getElementById(itemsAreaId)).live("click", function(){
我要迁移到.on()
我试过这个
var selectedEls = $(".remove", document.getElementById(itemsAreaId));
$(document).on('click',selectedEls, function(e){
但它不起作用。
任何人解释我做错了什么?
如果可能的话,为什么我的解决方案不起作用,所以我能理解。
非常感谢,保
答案 0 :(得分:5)
on()
must be a string的可选选择器。你正在为它提供一个jQuery对象(selectedEls
)。
相反,只需直接使用字符串选择器.remove
即可。不是定位document
,而是使用itemsAreaId
;
$('#' + itemsAreaId).on('click', '.remove', function ());
如果你想定位document
,你可以使用后代选择器以及itemsAreaId
和.remove
,就像这样;
$(document).on('click', '#' + itemsAreaId + ' .remove', function ());
...但最好尽可能靠近源处理处理程序,因此首选处理程序。
答案 1 :(得分:2)
$(document.getElementById(itemsAreaId)).on('click', '.remove', function(e){}
<强>解释强>:
如您所知,jQuery可以接受字符串甚至DOM元素作为其对象的构造函数,因此$(document.getElementById(itemsAreaId))
将为您提供对元素的最快和最近的访问权限。
.on('click', '.remove', function(e) {}
当点击带有remove
(附加了itemsAreaId
函数的)元素中具有类on
的任何元素时,此函数将调用函数(e)。
使用$(document)
会在每次用户点击时检查您的活动;使用$('#' + itemsAreaId)
的方式相同(我们谈论的是毫秒)因为jQuery必须解析字符串以检索DOM元素。