Javascript 调用同一obj中的方法,jQuery不起作用
我正在尝试创建一个对象,它偶尔会根据用户交互重建菜单。我的做法是克隆新菜单项并删除旧菜单项。这意味着我将使用某个类引入新的div实例,这意味着我必须重新加载影响该类的jQuery 在下面的示例中,单击菜单项将导致“TypeError:this.objMethod不是函数” 如何让jQueryClick方法调用objMethod?我假设这是一个范围问题,但我不知道如何让jQuery函数超越自身Javascript 调用同一obj中的方法,jQuery不起作用,javascript,jquery,object,scope,Javascript,Jquery,Object,Scope,我正在尝试创建一个对象,它偶尔会根据用户交互重建菜单。我的做法是克隆新菜单项并删除旧菜单项。这意味着我将使用某个类引入新的div实例,这意味着我必须重新加载影响该类的jQuery 在下面的示例中,单击菜单项将导致“TypeError:this.objMethod不是函数” 如何让jQueryClick方法调用objMethod?我假设这是一个范围问题,但我不知道如何让jQuery函数超越自身 function myObj(){ this.jQueryClick = function(){
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();
})
它可以工作,但这只适用于初始菜单,而不适用于重建菜单。对于jquery,您需要使用
$(this)
代替
this
通过jquery绑定事件时
因此,当使用.click()方法进行绑定时,需要使用$(this)才能找到所单击对象的实例 问题在于单击侦听器中的
此
的上下文不同…请尝试通过将此
保存到变量来解析范围:
var t = this;
t.jQueryClick = function(){
$('.menu-item').click(function(){
t.objMethod();
})
}
t.objMethod = function(){
alert('hounds released');
}
t.jQueryClick();
使用
$(文档)。在('单击','菜单项',回调函数)
;而不是那样。它每次重建时都会从根文档对象获取选择器。看起来您需要学习如何将事件绑定到动态元素(请参阅:)看起来您是对的!这是一个比将jQuery集成到对象本身更优雅的解决方案,我一直认为它看起来很凌乱。谢谢冠军:哦)嘿,酷。没问题。对不起,我(重读时)的评论有点直截了当。