Что касательно Таймаута, то
this в анонимной функции уже будет ссылаться не туда куда вы хотите. Нужно делать либо замыкание, либо использовать .bind, в современных браузерах.
Пример:
setTimeout (function(){
$(this).removeClass('selected');
}.bind(this), 1000);
В .bind первым аргументом отдается контекст. Больше можете почитать в гугле )