我有一组jQuery对象被推入'sections'数组。我添加一个.on事件监听器,我是console.log-ing来检查函数是否被调用,但事实并非如此。
sections.push($('#section' + p_sectionIndex));
sections[sections.length-1].on('show', this.showSection);
this.showSection = function() {
console.log("Section should show");
}
我在代码的其他地方打电话:
sections[showIndex].trigger('show');
我做错了什么?
答案 0 :(得分:4)
当您使用this.showSection
时,它未定义,因为function expression尚未执行。因此处理程序未注册
this.showSection = function () {
console.log("Section should show");
}
sections.push($('#section' + p_sectionIndex));
sections[sections.length - 1].on('show', this.showSection);
演示:Fiddle
但如果您使用function declaration,则会获得hoisted
jQuery(function () {
function handler1() {
console.log('handler1')
}
console.log('handler1', handler1)
console.log('handler2', handler2)
$('button').on('click', handler1).on('click', handler2)
function handler2() {
console.log('handler2')
}
})
演示:Fiddle