我正在尝试使用已弃用的.live()函数对某些代码进行现代化。但是一个调用在选择器中使用了一个变量,我不知道如何正确地将它转换为.on()语法。不推荐使用的代码是:
$('.selector .item a', $cal_fields).live('click', function(){
//do stuff
});
我的初始(失败)尝试将其转换为.on()是:
$('body').on('click','.selector .item a, '+$cal_fields, function()
$ cal_fields变量的初始分配为
var $cal_fields = $('#calendar_fields');
答案 0 :(得分:0)
为此,您需要模拟 .live()
正在做的事情。当您致电.live()
时,实际正在发生的事情是jQuery将事件绑定到document
,然后检查event.target
是否与您的选择器匹配。
另一个问题是您的$cal_fields
变量。由于加载页面时#calendar_fields
(可能)不存在,我们每次都需要重新评估该选择器,以获取元素。
所以,你可以尝试这样的事情:
$(document).on('click', $cal_fields.selector+' .selector .item a', function(){
});
$cal_fields.selector
将返回用于制作该jQuery对象(选择器)的字符串。
此外,$('.selector .item a', $cal_fields)
只是$cal_fields.find('.selector .item a')
的简写,因此'#calendar_fields .selector .item a'
应该是等效的。