#javascript #jquery #ajax #html
#javascript #jquery #ajax #HTML
Вопрос:
У меня есть рабочая среда, в которой я использую AJAX-ответ для заполнения HTML-элементов.
например, ответ AJAX содержит два (или n) объекта, подобных этому:
0:Object
id: "111"
Name: "abc"
1:Object
id: "112"
Name: "xyz"
Тогда уже было бы два (или n) divs с user
class и HTML5 data-user
, содержащих идентификатор в HTML
<div class='user' data-user='111'>
<div class='userId'data-userId='111> </div>
<div class='usernm' data-user='usernm'> </div>
</div>
<div class='user' data-user='112'>
<div class='userId'data-userId='112> </div>
<div class='usernm' data-user='usernm'> </div>
</div>
Что мне нужно, так это поместить эти значения ответа в этот раздел следующим образом:
<div class='user' data-user='111'>
<div class='userId'data-userId='111> 111 </div>
<div class='usernm' data-user='usernm'> abc </div>
</div>
<div class='user' data-user='112'>
<div class='userId'data-userId='112> 112 </div>
<div class='usernm' data-user='usernm'> xyz </div>
</div>
То, что я сейчас делаю (и работаю), — это использование jQuery find (см. Код ниже), но теперь мне предлагается поместить ответы с использованием data-..
атрибута HTML5. Я не могу обойти это, если кто-нибудь может помочь с этим..
$.ajax({
type: 'GET',
url: '/url/goes/here',
dataType: "json",
success: function(data) {
$('.user').each(function(key, value){ //i need to remove .user and use data-user here (if possible)
$(value).find('.userid').text(data[key].id); //i need to put values using data attr instead of find
$(value).find('.usernm').text(data[key].name); //i need to put values using data attr instead of find
});
}
});
Ответ №1:
Доступ к атрибутам данных осуществляется:
$(#id).data('userId');
или
$(#id).attr('data-userId');
и установить значение в этом атрибуте данных:
$(#id).data('userId', 'value');
или
$(#id).attr('data-userId', 'value');
Комментарии:
1. поскольку я беспокоюсь о времени ответа, я заменяю его с помощью find (надеюсь, я прав), поэтому для повышения скорости, что было бы лучше —
attr
илиdata
?2. attr — это распространенный метод доступа к идентификатору, названию и т.д. и данным только для атрибутов данных. Так что используйте в соответствии с вашим удобством.
3.
$('div[data-userId="' data[key].id '"]', data[key].id);
возможно ли что-то подобное?4.
data()
Метод jQuery не устанавливает adata-attribute
. Он сохраняет за сценой ссылку на элемент и данные, переданные как значение.$(element).data('attr', 'value') element.getAttribute('data-attr')
вернетсяnull
. Кроме того,element[data-attr]
селектор CSS не будет соответствовать элементу. Однако он может получить данные-атрибуты, если jQuery неdata
был установлен.