jquery.data () não manipula o dom

ou Por que você não deve (tenha cuidado) usar o atributo de dados nos seletores.

Enquanto trabalhava com a $().data()</code>função da biblioteca jquery, eu e meu colega@smas percebeu que os dados não estão realmente manipulando o DOM, mas armazenam as alterações no$.cache</code>.That actually can stop you from using data attribute in a selector, because you wont get the proper results.

Por exemplo, abra o console do seu navegador e resolva o seguinte código:

$('body').append("<div id='test' data-id='15' ></div");
$
('#test').data('id'); //Returns 15
$
('#test').data('id', 20);
$
('#test').data('id'); //Returns 20
//Now if you try to use data as selector
$
('div[data-id=20]'); //Nothing will be returned
$
('div[data-id=15]'); // Will get you the "proper" element

$
('div[data-id=15]').data('id'); //Will return 20 :)

Isso pode ser encontrado de forma precisa no changelog da versão jquery 1.6.3 (em Melhor tratamento de nomes de atributos de dados HTML5 ).

Lembre-se, entretanto, de que a API $ (). Data () apenas lê inicialmente os atributos de dados HTML5 e não mantém as alterações de dados subsequentes sincronizadas com os atributos por motivos de desempenho. Para atualizar os atributos reais na marcação HTML, use .attr ().