編輯:最初名爲Mootools的子指標刷新堆疊充斥
這是一個有點困難,我真的是100%確定什麼是真正的推移MooTools的之下引擎蓋,但這裏是怎麼好像工作:
當一個元素從DOM中分離,然後重新插入底部的它的容器,似乎下一循環getNext()
或getChildren()[0]
或類似的不返回的人認爲該元素是第一,他看上去時在HTML。
下面是我想要做的代碼。我無所適從,我甚至不確定我上面所描述的真正的問題。
function slideNext() {
window.clearTimeout(sliderTimeout);
var slider = $('slider');
slider.set('tween', {duration: 500, onComplete: function(){
var slide = slider.getFirst('.block').clone();
slider.grab(slide, 'bottom');
slider.getFirst('.block').destroy();
slider.erase('style');
sliderTimeout = window.setTimeout(function(){slideNext();}, 5000);
}});
slider.tween('margin-left', 0 - slider.getSize().x);
}
編輯:把一個alert(slide.get('html'));
的的onComplete函數內部能夠清除一些東西了。每次運行該功能時,警報對話的數量都會奇怪地增加,即使它只應警告一次。這似乎意味着通過使用slider.set('tween', {blabla})
週期性地導致堆疊補間,這使我認爲兒童索引可能有問題,但顯然情況並非如此。這種變化完美的作品:
function slideNext() {
window.clearTimeout(sliderTimeout);
var slider = $('slider');
var myFx = new Fx.Tween('slider', {
duration: 500,
property: 'margin-left',
onComplete: function(){
var slide = slider.getFirst('.block').clone();
slider.grab(slide, 'bottom');
slider.getFirst('.block').destroy();
slider.erase('style');
sliderTimeout = window.setTimeout(function(){slideNext();}, 5000);
}
});
myFx.start(0, 0 - slider.getSize().x);
}
有人可以解釋爲什麼這是?