2011-01-30 32 views
4

しないのはなぜこの作品:jQueryの - 変数別の関数から関数の変数を呼び出す

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

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

foo is undefinedエラーが発生します。しかし、私はちょうど上に定義しました...

+0

これを 'el.foo()'の代わりに 'foo()'と呼んでください。 – JCOC611

+0

私たちには欠けている重要な文脈があると思います。 'el.foo()'はここでは動作しません(私が見るところでは) 'el'オブジェクトのメソッドとして' foo'を作成しないので、通常の変数を作成します。 – sdleihssirhc

答えて

3

あなたはel.foo()ではなくfoo()を呼び出すだけです。 (あなたがこれをどのように使っているかについて何かが分からない限り)

2

fooelのプロパティではないためです。それは変数です。

あなたは必要があると思います:

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

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

それはあなたが持っていた場合は動作します:このインスタンスで

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

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

を対象elのプロパティではありませんfoo()ように見えます。関数を定義しましたが、ここに示す例からはおそらくグローバル関数です。あなたはfoo()、変数elで作業する場合は、そのような関数に渡し:fooはエルに接続定義された関数/ではないので

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. 
} 
3

することは、したがって、あなたはエルのコンテキストからのfooを呼び出すことはできません。 fooに直接電話する必要があります。

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

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

しかしあなたはエルのコンテキストに添付のfooを呼び出す必要がある場合は、この試してみてください。私が正しくあなたを理解していれば、あなたはjQueryプラグイン関数を作成する必要が

var boo = function() { 
     ... 
     foo.call(el);//This calls foo in el's context 
     } 
3

を:

jQuery.fn.foo = function(){ 
    return this.each(function(){ 
     // element-specific code here 
    }); 
}; 

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

電話をしようとしているとします。

el.foo() 

その後elはjQueryオブジェクト、あなたのように 'foo' を定義する必要があり、この場合には

var el = $("#smth"); 
el.foo(); 

のようなものです:あなただけから 'FOO' 'を呼び出すようにしようとしている場合、それ以外の

$.fn.foo = function() { 
.... 
} 

は、 「boo」と入力して「el」なしで電話してください:

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

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

希望すると助かります。

関連する問題