#javascript #jquery #html #html-lists #uid
#javascript #jquery #HTML #html-списки #uid
Вопрос:
Я извлекаю данные из базы данных, которую я не администрирую. Это единый список, и важными значениями являются:
- Имя папки
- Указатель
Integer
- UID (уникальная идентификация)
String
- Имя файла
Я успешно создал браузер с древовидной структурой, основанный на модели, использующей <ul>
<li>
теги and . Я также реализовал прослушиватели действий при двойном щелчке, которые находили идентификатор и действовали соответствующим образом. Идентификаторы были сохранены и найдены как value
-parameter для отдельных <li>
элементов, которые представляли листья или имена файлов.
Однако оказывается, что номера индексов не уникальны. Я ожидал, что они будут, хотя для UID
‘s был столбец. Я попытался установить значение value
равным UID String
. Это работает в моем браузере, как показывает фрагмент моего сгенерированного HTML-кода:
<li role="treeitem" value="1581f20c-0ef9-4c21-a8ab-a407da310cf5" ... >
Однако, когда я извлекаю значение и сохраняю его в базе данных, оно получает только числовое значение, которое появляется перед первым нечисловым символом. В данном случае 1581. Я проверил и пришел к выводу, что параметр-значение принимает только числовые значения, что для меня действительно отстой…
Существуют ли какие-либо другие способы привязать не отображаемую строку UID к элементу HTML-списка?
РЕДАКТИРОВАТЬ 2:
Я удалил свое предыдущее редактирование из-за осознания того, в чем заключалось мое недопонимание. Для пользовательских тегов данных требуется синтаксис «data-variablename», и при его извлечении я должен опустить «data-» и просто получить variablename.
Комментарии:
1. Вы не можете создавать пользовательские
data
теги?2.
$(li).data("value", $value-string);
?3. Если все ваши клиенты используют современные браузеры, вы можете попробовать атрибуты «data». Например:
<li role="treeitem" data-UID="1581f20c-0ef9-4c21-a8ab-a407da310cf5" ...>
4. ВАУ, это было много ответов, и быстро! Я не знал о возможности определения пользовательских тегов данных в HTML, и я очень рад узнать о них. Мне нужно сделать его совместимым для IE8, поэтому я прочитаю о его поддержке, прежде чем приступать к решению и принимать ответ.
Ответ №1:
value
Свойство <li>
элементов является порядковым значением и используется исключительно в <ol>
контексте (т.Е. В нумерованных списках).
Вместо этого вы можете добавить эту часть информации в качестве элемента данных:
<li role="treeitem" data-value="abc-foo-bar" ...>
Затем используйте это для повторного доступа к значению:
$(el).data('value')
Смотрите также: .data()
jQuery добавляет к каждому элементу специальное свойство, которое однозначно идентифицирует объект в «зарезервированной» памяти, который будет содержать ваши данные, поэтому вам не нужно беспокоиться о перезаписи чего-либо из самого элемента.
Комментарии:
1. Я остановился на этом ответе, потому что он короткий, простой, но в то же время специфичный и объясненный формат. Кроме того, он использует jQuery, который, как я подразумевал, я использовал через теги. если я прав, это означает, что он будет работать с большим количеством браузеров, а затем с некоторыми другими ответами, для которых требуется HTML-5.
2. Должен ли $(el) быть $ (li) ? Я пытался использовать это $(el).data(‘value’), также попробовал $.el.data(‘value’) , оба возвращали ошибки.
3. @mcv
el
в данном случае обозначает элемент, на который ссылается; это просто переменная в вашем коде.
Ответ №2:
value
это уже атрибут html. Поэтому браузер пытается исправить ваше значение, когда вы его используете. Попробуйте использовать пользовательский атрибут, например data-value
:
<li role="treeitem" data-value="1581f20c-0ef9-4c21-a8ab-a407da310cf5" ... >
Ответ №3:
Попробуйте это:
HTML:
<li data-uid="[your-UID-here]">
jQ:
$("li").data("uid");
Ответ №4:
Вы можете использовать функцию jQuery .data() .
$(element).data(key, value)