Я хотел бы наброситься на пункт меню 5px на mouseover и вернуть его в исходное положение с помощью Scriptaculous. Я использую обратный вызов afterFinish, чтобы убедиться, что эффект «Эффект перебора» завершен до того, как будет выполняться эффект возврата с возвратом.Сценарий нарушения обратного вызова с эффектом перемещения
Проблема заключается в том, что элемент не возвращается в исходное положение, если вы быстро наведите указатель мыши и выведите указатель мыши более одного раза. Чем больше вы наводите курсор мыши, тем больше он выключен. Я думал, что это то, что должен был предотвратить обратный вызов afterFinish. Это, кажется, правильно работать с эффектом Morph, и он должен работать со всеми Scriptaculous эффекты, как указано ниже:
Javascript - Scriptaculous - Effect Callback function
Я попытался с помощью эффектов очереди, такой же результат, и провел несколько часов, обыскивая различные форумы, чтобы помочь мне понять это.
Вот пример Morph, который работает правильно:
<SCRIPT>
function morphMe(obj) {
new Effect.Morph($(obj), {
style: {
height: '200px',
width: '200px'},
afterFinish: function(){ new Effect.Morph($(obj), {
style: {
height: '20px',
width: '200px'}});
}
})
}
</SCRIPT>
<div id="bumptest" class="leftnav" style="position: absolute; left: 100px; width: 200px; border: 1px solid green" onmouseover="morphme(this);">Morph Me</div>
Вот пример Move, который не работает, как ожидается, на быстром наведении курсора мыши и минусами. Возможно, мне нужно использовать setTimeout, но я не понимаю, почему это необходимо.
<SCRIPT>
function OnFinish(obj){
new Effect.Move(obj.element.id, {x: -5, y: 0, duration: .4});
}
function bumpOut(myObject){
new Effect.Move(myObject,
{ x: 5,
y: 0,
duration: 0.4,
afterFinish: OnFinish,
});
}
</SCRIPT>
<div id="bumptest" class="leftnav" style="position: absolute; left: 100px; width: 200px; border: 1px solid green" onmouseover="bumpOut(this);">Bump me right and then back</div>
Любая помощь, возможно, даже мода, использующая setTimeout или указатель на сплошной скрипт, который уже делает это, очень ценится.
Спасибо,
motorhobo
A ha. Я предполагаю, что этого не происходит с другими эффектами Scriptaculous, потому что они имеют статическую позицию. Спасибо ... не подумал бы об этом. – VanAlbert
Это не столько статические, либо абсолютные позиции, потому что, как вы сказали, первый пример (morphMe) работает. Это скорее предположение «Когда я начинаю действие, соответствующий объект должен находиться в нормальном/начальном состоянии», который не выполняется. – giraff