【问题标题】:JS: call methods of an object inside jquery "click"JS:在jquery“click”中调用对象的方法
【发布时间】:2014-01-12 19:10:56
【问题描述】:

我对自己的众多错误之一存在根本性的误解。我使用 jquery。

我有一个对象定义为:

var terms = {};

terms.clear_history = function(a, b)
{ /* DO SOMETHING */ }

我可以在我的主js文件中调用terms.clear_history(1,2)函数,没问题。但是当我尝试从<a/> 元素的“点击”中调用它时:

$(document).on('click', '#clearterms', function(){
    terms.clear_history(1, 2);
    });

它给了我以下错误:

Uncaught TypeError: Object # has no method 'clear_history'

我知道我不了解这里的基本内容......

谢谢!

【问题讨论】:

  • 你为什么不使用terms.clear_history(1, 2);?我想用完整的解释来回答,但我不明白你不明白的地方。
  • 是的,我做到了,实际上这是我犯了一个错误(更正了帖子以反映它)。谢谢
  • 你真的用this作为函数参数吗?
  • 好的,在clear_history(1, 2);前加terms后还有问题吗?
  • 您必须提供更多上下文信息,并请创建一个重现错误的jsfiddle.net 演示。您发布的代码不会引发这样的错误。

标签: javascript jquery methods


【解决方案1】:

这听起来像是范围问题。可能在全局范围内的terms 与给定方法分配的 clear_history 相同。 此外,您不想将参数命名为 this,这是 JS 中的保留关键字。

试试这个:

window.terms = {};
window.terms.clear_history = function(foo,bar){console.log(foo,bar);};

//then later:
$(document).on('click', '#clearterms', function(){
    window.terms.clear_history(1, 2);
});

【讨论】:

  • 仍然出现以下错误:Uncaught TypeError: Cannot call method 'clear_history' of undefined
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 2012-06-24
  • 2023-03-17
相关资源
最近更新 更多