Кстати, вы внутри цикла объявляете position с помощью var. В JS область видимости создает не блок ({ }), а функция. Таким образом вы объявляете переменную position в той же области видимости, что и blocks. Ну, на всякий случай.
Метод offset существует у объектов jQuery. Выбирая из blocks (который объект jQuery) нужный элемент с помощью индекса, вы получаете просто элемент DOM, в котором такого метода нет.
Ну в таком случае мне кажется стоит просто иметь два экземпляра объекта - старый и новый.
function doSomethingAwesomeWith(obj) {
return obj; // обработать obj и вернуть результирующий объект
}
obj = obj; // старый объект
result_obj = doSomethingAwesomeWith(obj); // новый объект
Таким образом в obj у вас лежит ссылка на исходный объект, а в result_obj - на новый.
thehighhomie: кстати, на сайте который вы привели в пример, делается именно так, как сказал этот чувак: при нажатии на кнопку цвета с <body> снимаются все классы и добавляется один нужный.
thehighhomie: Если вам просто надо загружать разные CSS, вы их берете и загружаете. Если хотите их кешировать, то сначала загружаете все нужные CSS в пустой iframe, должно сработать. Если хотите изменять существующие стили, то оперируете со styleSheet. Где-то в тех степях есть возможность поставить флажок типа "не использовать этот styleSheet", если вдруг вы все таки захотите использовать много элементов