我试图将事件处理程序分配给将在各个点动态创建的一堆类,并以有效的方式执行此操作。
我想我可以创建一个键值对列表,以类作为键,函数作为值,然后执行.each()循环,将事件处理程序分配给容器元素(在本例中为&#) 39; .panel&#39)。但是,这会导致在页面加载时调用所有函数。知道问题是什么吗?
var functionList = {
'.name': nameChange(),
'.email': sendEmail(),
'.notes': editNotes()
};
$.each(functionList, function(k,v) {
$('.panel').on('click',k,v)
});
更新:为了清楚起见,我将.click()更改为.on('点击')(问题仍然存在)
答案 0 :(得分:4)
您的问题在于functionList
对象的声明。您正在将每个属性的值设置为函数的值,因为您实际上正在为每个属性调用该函数。尝试删除每个值的parantheses。
var functionList = {
'.name': nameChange,
'.email': sendEmail,
'.notes': editNotes
};
答案 1 :(得分:0)
.on()用于绑定动态添加元素的事件。试一试 -
$.each(functionList, function(k,v) {
$('.panel').on('click', k, function(){v})
});