我有一个使用setTimeout函数执行动画的功能,结构如下:
animation: function() {
//first
setTimeout(function(){
makeObject({ ... }); // this makes '#object .secondary' on the DOM
}, 500);
//second
setTimeout(function(){
...
}, 1000);
//third
setTimeout(function(){
$('#object .secondary').doSomething();
}, 1500);
}
我正在第一个setTimeout函数中创建一个与'.secondary'CSL类关联的对象,然后我尝试选择该对象并使用第三个函数中的类名对其进行操作。但是,在第三个函数执行后,对象保持不变,并且我收到错误“Undefined is not a function”。我认为这是因为setTimeouts同时执行,因此第三个函数尚不存在辅助对象。所以我的问题是:如何从第三个setTimeout函数中操作辅助对象?
答案 0 :(得分:1)
自身的超时不应成为问题。第3名将在1日后大约1秒钟开始。
但是,你提到的错误是。根据您的评论:
通过
实际调用d3d3.select('#object').selectAll('.secondary').fadeOut(50);
这是因为D3 Selections,d3.select()
和.selectAll()
返回,与jQuery没有关系,并且没有得到它方法
在使用d3
之前,您必须将集合从jQuery
转换为.fadeOut()
。
jQuery( d3.select('#object').selectAll('.secondary') ).fadeOut(50);
或者,在整个声明中使用jQuery,正如您建议在您的代码段中做的那样:
jQuery('#object .secondary').fadeOut(50);
答案 1 :(得分:0)
如何在前一次设置第二次和第三次超时? E.G。
animation:function() {
setTimeout(function() {
makeObject(…);
setTimeout(function() {
...
setTimeout(function() {
$('#object .secondary').doSomething();
},500);
},500);
},500);
};