我正在尝试创建一个对象,该对象有时会根据用户的互动情况来重建菜单。我这样做的方法是克隆新菜单项并删除旧菜单项。这意味着我将使用某个类引入div的新实例,这意味着我必须重新加载影响该类的jQuery。
在下面的示例中,单击菜单项将导致“ TypeError:this.objMethod不是函数”。
如何获得jQueryClick方法来调用objMethod?我认为这是一个范围问题,但是我无法弄清楚如何让jQuery函数超越自身。
function myObj(){
this.jQueryClick = function(){
$('.menu-item').click(function(){
this.objMethod();
})
}
this.objMethod = function(){
alert('hounds released');
}
this.jQueryClick(); // will be called whenever the menu is rebuild
}
newObj = new myObj;
如果我用jQuery这样在外部调用objMethod:
$('.menu-item').click(function(){
newObj.objMethod();
})
它可以工作,但是仅对初始菜单有效,而在重建菜单时无效。
最佳答案
使用$(document).on('click', '.menu-item',callback function)
;而不是那个。重建时,它将从根文档对象中每次获取选择器。