$('div').data('info', 1);
alert($('div').data('info'));
//this works
$('div[data-info="1"]').text('222');
//but this don't work
Estou criando elemento dentro de jquery. Depois disso, quero adicionar o atributo "dados". Ele é como e é adicionado, mas no DOM, isso não é aparente e não consigo pegar o item usando
$('div[data-example="example"]').html()
jquery
html
custom-data-attribute
Luntegg
fonte
fonte
.data()
menos que você realmente tenha um motivo para usá-lo.attr()
..data()
não trabalha Ele não adicionar-atributo de dados para DOM, e eu não obter elemento por-atributo de dados ...data(key, val)
que criaria o attr. Alguém sabe por que não?Note that this doesn't create an actual data-info attribute. If you need to create the attribute, use .attr():
Essa foi a chave do meu problema. Muito obrigado..data () do jQuery faz algumas coisas, mas não adiciona os dados ao DOM como um atributo. Ao usá-lo para obter um atributo de dados, a primeira coisa que faz é criar um objeto de dados jQuery e define o valor do objeto para o atributo de dados. Depois disso, é essencialmente dissociado do atributo data.
Exemplo:
Se você pegasse o valor do atributo usando
.data('foo')
, ele retornaria "bar" conforme o esperado. Se você alterar o atributo usando.attr('data-foo', 'blah')
e depois usar.data('foo')
para capturar o valor, ele retornará "bar" mesmo que o DOM indiquedata-foo="blah"
. Se você.data()
definir o valor, ele mudará o valor no objeto jQuery, mas não no DOM.Basicamente,
.data()
é para definir ou verificar o valor dos dados do objeto jQuery. Se você estiver verificando e ele ainda não tiver um, ele cria o valor com base no atributo de dados que está no DOM..attr()
serve para definir ou verificar o valor do atributo do elemento DOM e não tocará no valor dos dados do jQuery. Se você precisar que ambos mudem, use ambos.data()
e.attr()
. Caso contrário, fique com um ou outro.fonte
No Jquery, " dados " não são atualizados por padrão:
Você usaria " attr " para atualização ao vivo:
fonte
fonte
O uso
.data()
adicionará apenas dados ao objeto jQuery para esse elemento. Para adicionar as informações ao próprio elemento, você precisa acessar esse elemento usando jQuery's.attr
ou native.setAttribute
Para acessar um elemento com o conjunto de atributos, você pode simplesmente selecionar com base nesse atributo conforme observa em sua postagem (
$('div[data-info="1"]')
), mas quando você usa,.data()
não pode. Para selecionar com base na.data()
configuração, você precisaria usar a função de filtro do jQuery.jsFiddle Demo
fonte
para obter o texto de um
fonte