【发布时间】:2013-04-25 15:38:25
【问题描述】:
我在一个对象中有一个对象,该对象包含一个值为 jQuery 函数的属性:
var fields = {
id: {},
timeStarted: {},
duration: {},
status: {},
name: {
field: $("#companyName"),
changeEvent: $("#companyName").on("click", function(){
alert("bazinga!");
})
}
};
我还有另一个函数,它遍历fields 中的所有值并尝试注册更改事件:
function registerChangeEvents(){
$.each(fields, function(field, v){
$.each(v, function(prop, vv){
// check which property the loop is on: if changeEvent
if (prop == "changeEvent"){
vv();
}
});
});
}
但是,当我运行 registerChangeEvents() 时,控制台返回 Uncaught TypeError: object is not a function。我可以用function(){...} 包装changeEvent 的值,这将使它成为一个可以正常运行的函数。不过,出于某种原因,这似乎不是正确的方法。
如果您有任何想法,请告诉我。
谢谢。
【问题讨论】:
-
它不是一个函数,它是调用那些 jQuery 函数(原来是一个 jQuery 包装器对象)的结果。将调用包装在匿名函数中是要走的路(除非你想使用
$.fn.click.bind($("#companyName"), alert.bind(window, "bazinga!")))
标签: javascript jquery function object