2013-08-20 2 views
0

В каком случае этот код вернет 0?jQuery и атрибуты данных

$(this).parent().data("id") 

И этот код вернет реальное значение?

$(this).parent().attr("data-id") 

Спасибо.

+0

кто-то присваивается значение '$ (это) .parent(). Данные ("Идентификатор", 0)' –

+0

Данные jQuery() и атрибуты данных - это отдельные вещи. jQuery использует свой собственный кеш, а data - это собственная функция HTML5. – Virus721

+0

@ Virus721 вы можете получить атрибуты 'data- *', используя 'data()' ... – brbcoding

ответ

4

Если .data("id") и .attr("data-id") возвращаются различных значения, то либо значение свойства id данных изменено с помощью функции JQuery data() или значение data-id атрибута было обновлено с первым вызовом .data("id").

Функция jQuery data() будет использовать атрибуты data- элемента для инициализации значения этого свойства данных. Однако изменения в свойстве данных не отражены в HTML. Поэтому обновление значения с использованием data() делает не также обновляет атрибут.

От documentation:

В data- атрибуты втягиваются в первый раз свойство данных не доступ, а затем больше не доступны или мутантный (все значения данных затем сохраняются внутри JQuery) ,

HTML

<div id="myDiv" data-id="realValue"></div> 

JQuery

$('#myDiv').data('id'); //returns 'realValue' 
$('#myDiv').data('id', 0); 
$('#myDiv').data('id'); //returns 0 
$('#myDiv').attr('data-id'); //returns 'realValue' 
Смежные вопросы