Prototype.js: сброс setStyle

Есть ли существует какой-либо путь, как сбросить стили назад к тому, что находится в моем CSS?

Пример:

#foo {width: 50px; height: 50px; position: absolute; top: 150px; left: 250px;}


function moveFoo(newpostop, newposleft){
  $('foo').setStyle({top: newpostop+'px', left: newposleft+'px'});
}

Теперь, когда я сделан с ним, я хотел бы положить обратно нечто, когда это было. Я знаю, что это может быть трудно кодировано, но я должен сделать это с 25 различными отделениями.

Спасибо

6
задан Rob W 27 December 2011 в 16:37
поделиться

2 ответа

Установка стиля не исключает всех элементов в классе CSS. Он отменяет только те, которые были изменены. Фактический стиль элемента управления представляет собой комбинацию стиля CSS и настраиваемого стиля атрибута style. Чтобы полностью вернуться к стилю CSS, просто удалите атрибут стиля.

$('#foo').removeAttr('style');

РЕДАКТИРОВАТЬ:

По-видимому, вышеуказанное не работает. Однако в комментариях мне сообщили, что следующее:

$('#foo').writeAttr('style', '');
5
ответ дан 9 December 2019 в 20:42
поделиться

Вы можете удалить атрибут, но я не думаю, что вы сможете вернуть его обратно.

Вы можете отменить его, если использовали дополнительную таблицу стилей для изменения макета. Таким образом, вы сможете включить в таблице стилей отображение изменения и отключить его, чтобы отменить.

Лучшим решением, вероятно, будет сохранение старых атрибутов в массиве и использование этого массива для обратного изменения атрибутов стиля

Примерно так:

   var tempStyle = new Array();

    function moveFoo(newpostop, newposleft){
      tempStyle ["foo"] = new Array();
      tempStyle ["foo"]["top"] = newpostop;
      tempStyle ["foo"]["left"] = newposleft;

      $('foo').setStyle({top: newpostop+'px', left: newposleft+'px'});
    }

   function restoreFoo(){
      $('foo').setStyle({top: tempStyle ["foo"]["top"]+'px', left: tempStyle ["foo"]["left"]+'px'});
    }
0
ответ дан 9 December 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: