jQuery - 从另一个函数变量调用函数变量

时间:2011-01-30 18:41:13

标签: javascript jquery

为什么这不起作用:

  var foo = function() {
     ...
  };

  var boo = function() {
     ... 
     el.foo();
   }

我得到一个foo是未定义的错误。但我刚才在上面定义了......

6 个答案:

答案 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();
}

希望,这有帮助。