2012-02-22 2 views
3

Я хочу, чтобы некоторые из них возвращались к манипуляции с dom. Я думаю, что мы можем сохранить статус элементов несколькими способами. Например, вы хотите сделать элемент «вставленным», что мне нужно использовать? :Лучший способ манипулировать атрибутами элемента dom с помощью javascript/jQuery

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

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

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

+0

Мне любопытно посмотреть, что должен сказать кто-то, кто имеет опыт в этих методах. Хороший вопрос! –

+0

Это действительно зависит от того, что означает «выбранный». Если это просто для программных целей, поскольку объекты Javascript являются просто ассоциативными массивами, вы можете добавить «выбранный» в качестве нового члена в DOMElement: 'someDOMElement.selected = true;' – crush

+0

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

ответ

2

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

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

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

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

2

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

Элементы данных являются вполне допустимым способом пометки чего-то.

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

+0

Да, хорошее решение, я забыл json в javascript :) – Sebastien

0

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

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

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

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

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

+0

У меня нет конкретного случая, я просто пытаюсь найти лучший способ сделать хороший код javascript. Я начинаю работать над видеоиграми в браузере, и мне нужно много js :) – Sebastien

0

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

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

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

, как для третьего варианта, атрибут может дать вам массив все выбранного alemens использованияКонтактного селектор JQuery $ («* [выбрано]»)

0

если вещи сложны я ставлю усовершенствованные элементы 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 
    } 
} 
Смежные вопросы