我正在尝试创建一个对象,该对象有时会根据用户的互动情况来重建菜单。我这样做的方法是克隆新菜单项并删除旧菜单项。这意味着我将使用某个类引入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);而不是那个。重建时,它将从根文档对象中每次获取选择器。

10-06 06:58