Лучший способ манипулировать атрибутами элемента dom с помощью javascript / jQuery - PullRequest
3 голосов
/ 22 февраля 2012

Я хочу получить некоторую информацию о манипуляциях с домом Я думаю, что мы можем сохранить статус элементов несколькими способами. Например, вы хотите сделать элемент "вставленным", что мне нужно использовать? :

  • Добавить класс CSS как "вставленный"
  • Сохранить атрибут с .data ("вставлено", true)
  • Вставить мой элемент в глобальный массив, содержащий все «вставленные» элементы
  • ...

Но как лучше? Возможно, решение состоит в том, чтобы использовать все возможности. Я не знаю.

Это общий вопрос. У меня нет конкретной проблемы, но я начинаю разрабатывать огромное приложение на JavaScript и хочу выбрать свои правила:)

Ответы [ 5 ]

2 голосов
/ 22 февраля 2012

Если вы хотите, чтобы визуальный элемент сопровождал статус, то CSS-класс - очевидный путь.

Элементы данных - это также совершенно правильный способ пометить что-либо.

Если вы хотите сохранить состояние, тогда сохранение статуса элемента в структуре JSON может быть хорошим вариантом. Данные JSON - это «основная модель», а элементы отображаются на основе ее модели. Данные JSON могут быть легко переданы на сервер или на следующую страницу.

2 голосов
/ 22 февраля 2012

Хотите, чтобы выбранные элементы выглядели определенным образом?
-> Использовать класс css

Хотите проверить, выбран ли конкретный элемент в другом месте кода?
-> Использовать .data

Хотите ли вы что-то сделать со всеми выбранными элементами?
-> Использовать массив.

Если вы планируете сделать несколько извещи выше, вы также можете объединить подходы.

0 голосов
/ 22 февраля 2012

если все усложняется, я помещаю улучшенные элементы dom в "классы"

var InserttMe = function(element){
    this.element = element;
    this.inserted= false;
};
selectMe.prototype = {
    insert: function(){
       this.inserted= true;
       //do whatever you do with your element
    }
}
0 голосов
/ 22 февраля 2012

Для меня это зависит от того, каким будет использование статуса ...

  • Если макет меняется в зависимости от выбранного, я использую класс
  • логика JS (больше, чем только стилизация) -> атрибут

Я почти не использую классы для добавления логики js к элементам ... css имеет тенденцию меняться чаще, чем базовые файлы javascript. Если я использую классы в js, я заставляю себя сохранять имена классов и селекторы в css или просто повторять все выбор элементов в js и css, когда нужно изменить (например, из-за использования другой библиотеки или шаблонов css)

Что касается вашего третьего варианта, атрибут может дать вам массив всех выбранных элементов, используя селектор jquery $ ('* [selected]')

0 голосов
/ 22 февраля 2012

Обычно это сложный вопрос, потому что он действительно зависит от потребностей вашего приложения.Сколько элементов вам нужно оценить в любой момент времени?Дюжина?Несколько тысяч?Что еще нужно сделать с этими элементами при их выборе?Основные рекомендации:

  1. Не добавляйте класс selected, если только вам действительно не нужно менять стиль элемента.

  2. Есливам необходимо перейти к элементу в зависимости от того, выбран он или нет, не используйте опцию data().

  3. Не кэшируйте выбранные элементы в памяти (переменные или localStorageили что-то еще), если вам не нужно, чтобы они сохранялись более чем на один простой вызов.Затраты на управление массивом выбранных элементов оправдывают себя только в том случае, если у вас заметный прирост производительности или вам необходимо сохранить данные.

Итак, что вам действительно нужно делать с этимиэлементы?Получив больше информации о вашей ситуации, мы сможем дать вам лучшую рекомендацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...