如何使函数像回调一样运行
How can I make a function act like a callback
当removeHighlight()
完成后,我怎样才能让shwOpts.show("fast");
采取行动?
我想如果我把一个匿名函数作为参数放在另一个函数中,它将充当回调。这行不通。
removeHighlight : function(f) {
// remove previous highlight.
var highlight = $('#openid_highlight');
if (highlight) {
highlight.replaceWith($('#openid_highlight a')[0]);
}
},
moreOptsLink = $("#more-options-link").click(function () {
moreOptsLink.detach();
openid.removeHighlight(function(){$("#show-more-options").show("fast");});
//shwOpts.show("fast");
openid.setPref("showMoreOpenIdOptions", !0)
});
您没有执行回调函数
removeHighlight : function(f) {
// remove previous highlight.
var highlight = $('#openid_highlight');
if (highlight) {
highlight.replaceWith($('#openid_highlight a')[0]);
}
if (typeof(f) === "function") {
f();
}
},
你应该在 removeHighlight 函数中调用回调,如下所示:
removeHighlight : function(f) {
// remove previous highlight.
var highlight = $('#openid_highlight');
if (highlight) {
highlight.replaceWith($('#openid_highlight a')[0]);
if( typeof f === 'function' ) {
f();
}
}
},
moreOptsLink = $("#more-options-link").click(function () {
moreOptsLink.detach();
openid.removeHighlight(function(){
$("#show-more-options").show("fast");
});
openid.setPref("showMoreOpenIdOptions", true);
});
通过使用 typeof 控件,当您不将函数作为参数传递给函数时,不会发生任何错误。
removeHighlight : function(f) {
// remove previous highlight.
var highlight = $('#openid_highlight');
if (highlight) {
highlight.replaceWith($('#openid_highlight a')[0]);
}
//you need to call f
f()
},
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Angularjs代码未在匿名函数中运行
- jquery设置为使用参数运行
- 如何使函数像回调一样运行
- 像谷歌分析一样加载js脚本,然后运行一个函数
- ng-重复运行次数与整数参数一样多在某些情况下不起作用
- 有没有办法防止字符串像多维数组一样运行
- 是否可以使输入像链接(Chrome)一样运行
- 原型链接、调用父方法的行为就像父构造函数从未运行过一样
- 如何获取html元素运行时代码以生成通用副本?就像复制文本框中输入文本一样
- 如何在我的HTML页面中运行Node.js脚本,就像我在PHP中一样
- 在函数中运行代码,就好像它在另一个作用域中运行一样
- 像桌面应用程序一样运行Node Webkit
- 是否可以像使用PHP文件一样使用Node.js而不运行服务器
- 为什么fiddle代码在dropbox上运行不一样
- 如何使html页面的本地副本像在线版本一样运行