Не могу разобраться почему не передается контекст при вызове функции через setTimeout. На заголовки повешены события:
Первое плавно удаляет контейнер, если он есть
$("h3").bind("click", function() {
if ($(".content").length) {
$(".content").animate({width: '0'}, function () {
$(this).remove();
});
}
});
Второе вызывает функцию, где надо поменять местами заголовки. Если контейнер уже удален, то функция вызывается с правильным контекстом, то есть ей передается тот заголовок, на который я кликаю. А если контейнер, еще не удален, то через setTimeout в контексте ничего нет.
$("h3").bind("click", function() {
if ( $(".content").length) {
setTimeout(function () {moveObj.func.call($(this))}, 2000);
}
else {
moveObj.func.call($(this));
}
});
когда func запускается через setTimeout, то this не тот, который нужен
moveObj = {
func: function () {
if ($(this).attr("id") == "main") {
$(this).animate({left: '200px'}, 1000, function() {
$(this).animate({top: '50px'}, 1000);
});
},
и т.д.
В чем косяк? Я думал сначала что там передается объект контейнера, который я удаляю, но тогда $(this).attr("class") должно быть равно "content", а на деле "undefined". Короче, разъясните пожалуйста, а то совсем запутался.