【问题标题】:JavaScript/JQuery: store function in an object and execute itJavaScript/JQuery:将函数存储在对象中并执行
【发布时间】:2014-07-02 14:00:07
【问题描述】:

我有一个像这样的多维对象:

objectx = {
    1: {
        name: "first",
        loadFunction: function(target) { 
            $(target).load("http://stackoverflow.com #question", function() {
                // do something else
            });
        }
    },
    2: {
        name: "second",
        loadFunction: function(target) { 
            $(target).load("http://stackoverflow.com #answer", function() {
                // do something else
            });
        }
    }
}

每个对象都有自己的函数,可以从不同位置加载和格式化内容。但是如何从我的程序中调用 loadFunction 中的函数呢?

顺便说一句,我使用simple PHP proxy 来加载内容,以供任何偶然发现并想知道的人使用。示例已简化。

【问题讨论】:

  • 您的对象有语法错误。您在每个 name 属性之后都缺少 ,
  • 只是objectx[1].loadFunction(target);?如果您想以编程方式调用所有这些,那么循环数组将是更好的选择。
  • 逗号在那里,但还有另一个语法错误。谢谢!

标签: javascript jquery function object properties


【解决方案1】:

这在控制台中对我来说很好用:

var derp = {1: {func: function(msg){console.log(msg);}}}

derp[1].func('hi');

在您的示例中,我认为主要问题是您在 loadFunction 属性之前缺少逗号。所以你的对象不是你想象的那样。

这是一个更直接适用的例子。我只是在控制台中执行了它,所以我知道它有效。

objectx = {
    1: {
        name: "first",
        loadFunction: function(target) { 
            console.log('first: ' + target);
        }
    },
    2: {
        name: "second",
        loadFunction: function(target) { 
            console.log('second' + target);
        }
    }
}

objectx[1].loadFunction('hi');
> first: hi

objectx[2].loadFunction('hi');
> secondhi

也许每当你引用 objectx 时,它并不处于你认为它所处的状态。

【讨论】:

  • 将这些内容复制并粘贴到控制台中并执行它。它有效吗?如果是这样,您的错误不在您认为的位置。
  • 或者$(target).load 是什么引发了not a function 错误?我相信如果您的 jQuery 选择器没有找到任何东西,就会发生这种情况。
  • 你是对的。问题是对象中的另一个语法错误。现在可以了,谢谢!
猜你喜欢
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 2014-10-08
  • 1970-01-01
相关资源
最近更新 更多