У меня есть объект javascript с небольшим количеством jquery для визуального эффекта.
Я могу получить доступ к этому. что угодно внутри основной функции animate, но я не могу получить к нему доступ. что угодно из функции в конце (когда анимация завершена)
this.myDiv1 = 'myScrollableDiv';
this.myDiv2 = 'myDivToScrollTo';
this.test = 'It works';
$( "#"+this.myDiv1 ).animate({
scrollTop: $( "#"+this.myDiv2 ).position().top - $( "#"+this.myDiv1 ).position().top
}, 500, function() {
this.myOtherFunction();
});
this.myOtherFunction = function() {
alert(this.test);
};
this.myOtherFunction не вызывается, потому что я думаю (this) в строке this.myOtherFunction (); ссылается на текущую анимированную функцию jquery, а не на глобальный объект.
Итак, я попытался создать копию (этого) в качестве стандартного javascript var
var thisCopy = this;
перед функцией animate, затем используйте thisCopy со всеми существующими переменными. Это работает ...
Однако я не хочу копировать (это), потому что мне нужно обновить переменные реальных объектов для использования с другими функциями.
Я также пытался объявить myOtherFunction как обычную переменную, затем вызвать myOtherFunction без (), и она вызывает функцию, но все еще не дает мне доступ к объектным переменным.
Как я могу вызвать this.myOtherFunction () после завершения анимации и получения доступа ко всем переменным глобальных объектов?