为什么这不起作用:
var foo = function() {
...
};
var boo = function() {
...
el.foo();
}
我得到一个foo是未定义的错误。但我刚才在上面定义了......
答案 0 :(得分:3)
你只需要调用foo(),而不是el.foo()。 (除非我遗漏了你如何使用它。)
答案 1 :(得分:3)
由于foo不是定义/附加到el的函数,因此您无法从el的上下文中调用foo。 你需要直接打电话给foo。
var foo = function() {
...
};
var boo = function() {
...
foo();
}
但是如果你需要调用附加到el的上下文的foo,那么试试这个:
var boo = function() {
...
foo.call(el);//This calls foo in el's context
}
答案 2 :(得分:3)
如果我理解正确,你需要创建一个jQuery插件函数:
jQuery.fn.foo = function(){
return this.each(function(){
// element-specific code here
});
};
var boo = function() {
...
el.foo();
}
答案 3 :(得分:2)
因为foo
不是el
的属性。这是一个变量。
你需要:
var foo = function() {
//...
};
var boo = function() {
//...
foo();
}
如果你有:
var el = {};
el.foo = function() {
// ...
};
var boo = function() {
//...
el.foo();
}
答案 4 :(得分:2)
在这种情况下,foo()
看起来不是对象el
的属性。您定义了该函数,但从显示的示例中,它可能是一个全局函数。如果您希望foo()
处理变量el
,请将其传递给函数,如下所示:
var foo = function(element) {
//do something with this element
};
var boo = function() {
...
foo(el); //pass el into the foo function so it can work on it.
}
答案 5 :(得分:1)
我想,如果你打算打电话:
el.foo()
然后el是jQuery对象,类似于
var el = $("#smth");
el.foo();
在这种情况下,您需要将'foo'定义为:
$.fn.foo = function() {
....
}
否则,如果您只是试图从'boo'调用'foo',那么只需在没有'el'的情况下调用它:
var foo = function() {
...
};
var boo = function() {
...
foo();
}
希望,这有帮助。