首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匿名函数内部的setTimeout

匿名函数内部的setTimeout
EN

Stack Overflow用户
提问于 2011-01-08 00:08:53
回答 5查看 4.4K关注 0票数 1

我想在我的jQuery函数中调用editObject(),初始化调用可以工作,但是setTimeout不工作,如何让它运行?控制台提示setTimeout调用时未定义editObject:

代码语言:javascript
复制
(function($){
    $.fn.extend({

                    ...

                    editObject()

            function editObject() {
                alert("Test!");
                setTimeout('editObject()', 1000);
            }

            return this.each(function() {
                var o = options;
            });
        }
    });
})(jQuery);

感谢您的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-08 00:10:55

你可以试试这个:

代码语言:javascript
复制
setTimeout(function(){ editObject.call() }, 1000);

或者:

代码语言:javascript
复制
setTimeout(arguments.callee, 1000);
票数 5
EN

Stack Overflow用户

发布于 2011-01-08 00:12:43

它不起作用,因为editObject()是在匿名函数的作用域中声明的,但是setTimeout()会计算您在全局上下文中传递给它的字符串。试试这个:

代码语言:javascript
复制
setTimeout(editObject, 1000);
票数 8
EN

Stack Overflow用户

发布于 2011-01-08 00:13:18

您应该避免使用字符串版本的setTimeout

我相信,在这种情况下,Javascript正在寻找函数window.editObject,而这个函数并不存在。

您应该使用:

代码语言:javascript
复制
setTimeout(editObject,1000);

相反,由于这是在调用时获取对对象的引用,因此当超时到期时,该函数将可供Javascript调用

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4627500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档