我正在编写 jQuery插件,与此类似,
$(this).each(function(){
$el = $(this).find('.el')
$el.click(function(){
test();
});
function test() {
console.log('test init');
}
});
单击$el
时,此工作正常
但是当我使用test()
之外的$el.click
时
$(this).each(function(){
$el = $(this).find('.el')
test();
function test() {
console.log('test init');
}
});
我收到类型错误undefined is not a function
PS:我用咖啡编码,语法/拼写不是问题
答案 0 :(得分:2)
如果您的test()
需要立即执行,请执行以下操作:
$(this).each(function(){
$el = $(this).find('.el')
(function test() {
console.log('test init');
}()); //the "()" at the end executes the function
});
但test()
won't be available from the outside world这样。它有点“封闭”。如果你需要测试立即执行并且仍然可以被其他人调用,请执行以下操作:
$(this).each(function(){
$el = $(this).find('.el')
var test = (function testFunc() {
console.log('test init');
return testFunc; //return itself to the variable "test"
}()); //execute
});