EDIT: Первоначально названный 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);
}
EDIT: Положив 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);
}
Может кто-нибудь объяснить, почему это так?