JavaScript использует пользовательские атрибуты в качестве механизма сохранения - PullRequest
0 голосов
/ 14 декабря 2011

Мне нужно сохранить состояние моего элемента управления Html (у меня есть список с множественным выбором, и мне нужно сохранить информацию о выбранных элементах), для которого я использую пользовательский атрибут, такой как:

// put
$("#element").attr("selectionState", "value");

// get
alert($("#element").attr("selectionState"));

Пока это работает, мне интересно, если это безопасный подход, а если нет, как бы вы решили проблему?

Единственный риск, который я вижу, - это другой скрипт, создающий пользовательские атрибуты с такими же именами, которым я могу управлять.

1 Ответ

3 голосов
/ 14 декабря 2011

Я предлагаю использовать .data().

$('#element').data('selectionState', 'value');

Это определенно безопаснее, так как он хранит данные полностью в JavaScript вместо отображения «атрибутов» в элементах DOM. Sins ".data ()" - это все JavaScript, вы можете хранить там все, что угодно, включая функции и замыкания. (Полагаю, вы могли бы сделать это и с помощью «.attr ()», но это довольно рискованно в IE, который, по крайней мере, в старых версиях имел довольно различное управление хранением данных для DOM и JScript.)

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

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