我想优先考虑我的职能。
$(document).ready(function(){
drawMap();
on showLinks() ready do drawChart();
});
我如何用jQuery做到这一点?
谢谢,Répás
答案 0 :(得分:1)
在drawMap()中调用showLinks() 在内部和末尾调用drawChart()showLinks()
答案 1 :(得分:1)
正如Gary在他的回答中已经提到的那样,如果您正在处理异步执行,那么您只想这样做。
您可能需要查看jQuery 1.5中引入的deferreds。
在你的情况下,它看起来像这样:
$(function(){
drawMap();
$.when(showLinks())
.then(drawChart);
});
要完成上述工作,您必须确保showLinks
函数返回promise并在执行完毕后触发resolve
。
function showLinks(){
var dfd = $.Deferred();
// Add your asynchronous code here
setTimeout(function(){
console.log("Links shown!");
dfd.resolve();
}, 1000);
return dfd.promise();
}
答案 2 :(得分:1)
如果showLinks() & drawMaps()
不是异步,则只需在drawChart()
之后直接调用:
$(document).ready(function(){
drawMap();
showLinks();
drawChart();
});
否则会向showLinks()
提供回调:
function showLinks(callback)
{
/* your code */
callback();
}
$(document).ready(function(){
drawMap();
showLinks(drawChart);
});
很难说出你的代码中是什么和不同步和异步,但无论如何提供回调,如上例所示,是前进的方法。
答案 3 :(得分:0)
您可以从showLinks()函数中抛出自定义事件吗?然后你可以抓住这个事件并做出相应的反应
bind
和trigger
之间的比赛很好。以下是docs