Javascript 如何从jquery中的另一个函数调用父类的函数

Javascript 如何从jquery中的另一个函数调用父类的函数,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我想这是个简单的问题。我是新来的js,尤其是Backbone.js 我只想知道如何在jquery函数中引用我的函数 getLanguages: function() { ... return languages; }, render: function() { ... $("input[type='checkbox']").bind("change", function() { // todo: getLanguages }); }

我想这是个简单的问题。我是新来的
js
,尤其是
Backbone.js

我只想知道如何在jquery函数中引用我的函数

getLanguages: function() {

   ...

   return languages;
},

render: function() {

    ...

    $("input[type='checkbox']").bind("change", function() {

       // todo: getLanguages
    });

}
render: function() {

    var CurrentObj = this;

    $("input[type='checkbox']").bind("change", function() {
        CurrentObj.getLanguages();
    });

}
我试图通过
this
获取语言,但是,当然,在这种情况下,我得到了
复选框

编辑:
很简单。多谢大家

这是Javascript中的一个经典问题。您需要在回调中引用
this
,但是
this
会更改绑定到的元素。一种廉价的方法:

render: function() {
    var that = this;

    $("input[type='checkbox']").bind("change", function() {
       that.getLanguages();
    });
}
将保持定义为
,该在其上定义

然而,您正在使用主干网,它有更合适的方法来处理这种情况。我不知道你的
主干网的名称。查看
类,但这里有一个:


render
内部调用
bind
不是主干方式。主干视图用于处理事件委派,而无需传递
这个

这是Javascript中的一个经典问题。您需要在回调中引用
this
,但是
this
会更改绑定到的元素。一种廉价的方法:

render: function() {
    var that = this;

    $("input[type='checkbox']").bind("change", function() {
       that.getLanguages();
    });
}
将保持定义为
,该
在其上定义

然而,您正在使用主干网,它有更合适的方法来处理这种情况。我不知道你的
主干网的名称。查看
类,但这里有一个:


render
内部调用
bind
不是主干方式。主干视图用于处理事件委派,而无需在渲染函数范围内的绑定更改事件之前保存此对象

getLanguages: function() {

   ...

   return languages;
},

render: function() {

    ...

    $("input[type='checkbox']").bind("change", function() {

       // todo: getLanguages
    });

}
render: function() {

    var CurrentObj = this;

    $("input[type='checkbox']").bind("change", function() {
        CurrentObj.getLanguages();
    });

}

在渲染函数范围内的绑定更改事件之前保存此对象

getLanguages: function() {

   ...

   return languages;
},

render: function() {

    ...

    $("input[type='checkbox']").bind("change", function() {

       // todo: getLanguages
    });

}
render: function() {

    var CurrentObj = this;

    $("input[type='checkbox']").bind("change", function() {
        CurrentObj.getLanguages();
    });

}

您可以将适当的对象保存到局部变量中,以便从事件处理程序中仍然可以访问它:

getLanguages: function() {

   ...

   return languages;
},

render: function() {

    ...
    var self = this;

    $("input[type='checkbox']").bind("change", function() {
       var lang = self.getLanguages();
       ...
    });

}

您可以将适当的对象保存到局部变量中,以便从事件处理程序中仍然可以访问它:

getLanguages: function() {

   ...

   return languages;
},

render: function() {

    ...
    var self = this;

    $("input[type='checkbox']").bind("change", function() {
       var lang = self.getLanguages();
       ...
    });

}

这看起来像一个对象,你试过objName.functionName(obj.prop)吗?我用主干特定的代码更新了我的答案,我建议你检查一下。存储对
的引用可能会解决您眼前的问题,但它不美观,而且主干具有内置结构以避免这种不美观的需要。看起来像一个对象,您是否尝试过objName.functionName(obj.prop)?我用我建议您检查的主干特定代码更新了我的答案。存储对
的引用可能会解决您眼前的问题,但它不美观,而且主干具有内置结构以避免不美观。
事件
的+1,使用
events
还可以将所有内容本地化到视图的
el
,这有助于保持视图的自包含性。+1对于
events
,使用
events
还可以将所有内容本地化到视图的
el
,这有助于保持视图的自包含性。