Как сохранить идентификатор записи для данных из запроса ajax в динамически создаваемых элементах html

Предположим, что эта конфигурация:

  • на стороне сервера — это приложение PHP, отвечающее на запросы с данными (список элементов, сведения об одном элементе и т. д.) в формате json.
  • клиентская сторона - это приложение JQuery, отправляющее запрос ajax этому приложению PHP и создающее html-контент, соответствующий полученным данным.

Например: клиент запрашивает «список всех животных с именами, начинающимися с буквы «А»», получает ответ json от сервера и для каждого «животного» создает какую-то html штуковину, такую ​​как div с описанием животного или что-то в этом роде. На самом деле не имеет значения, какой это будет html-элемент, но он должен точно указывать на конкретную запись, «содержащую» идентификатор этой записи.

И вот моя дилемма: хорошо ли использовать для этого свойство «id»? Так было бы так:

<div id="10" class="animal">
<p>
This is animal of very mysterious kind...
</p>
</div>

<div id="11" class="animal">
<p>
And this one is very common to our country...
</p>
</div>

где id="10", конечно, указывает на то, что это представление записи с id = 10.

Или, может быть, мне следует сохранить этот идентификатор записи в каком-то пользовательском теге, например

<record_id>10</record_id> 

и оставить «id» строго для того, чем он должен был быть (селектор css)?

Мне нужен этот идентификатор записи для дальнейших действий, таких как обновление базы данных с помощью пользовательского ввода или удаление некоторых «животных», или создание новых, или что-то еще, что будет необходимо. Все манипуляции будут выполняться с помощью запросов JQuery и ajax, а ответы будут визуализированы также с динамическим созданием html-интерфейса.

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


person grapkulec    schedule 04.01.2011    source источник


Ответы (2)


Для этой цели вы можете использовать data(), предоставляемые jQuery API.

Для хранения данных вы можете использовать

$("element").data("record-id", 5);

Чтобы получить значение, вы можете использовать

$("element").data("record-id");

data() хранит данные таким образом, что они защищены от любых проблем с утечкой памяти.

Подробнее о методе data() можно прочитать здесь.

person Arun P Johny    schedule 04.01.2011
comment
Мне нравится, как быстро stackoverflow справляется с моими дилеммами :) - person grapkulec; 04.01.2011

Вы должны использовать метод данных для хранения произвольных данных об элементе, а затем извлекать их. Пример:

var elm = $('<li>').data('record_id', 5);

И получение просто:

elm.data('record_id');
person VoY    schedule 04.01.2011