$('div').data('info', 1);
alert($('div').data('info'));
//this works
$('div[data-info="1"]').text('222');
//but this don't work
我在 jquery 中创建元素。之后,我想添加属性“数据”。他喜欢并被添加,但在 DOM 中,这并不明显,我无法获取该项目,使用
$('div[data-example="example"]').html()
$('div').data('info', 1);
alert($('div').data('info'));
//this works
$('div[data-info="1"]').text('222');
//but this don't work
我在 jquery 中创建元素。之后,我想添加属性“数据”。他喜欢并被添加,但在 DOM 中,这并不明显,我无法获取该项目,使用
$('div[data-example="example"]').html()
使用.data()
方法:
$('div').data('info', '222');
请注意,这不会创建实际data-info
属性。如果您需要创建属性,请使用.attr()
:
$('div').attr('data-info', '222');
jQuery 的 .data() 做了几件事,但它不会将数据作为属性添加到 DOM。当使用它来获取数据属性时,它所做的第一件事就是创建一个 jQuery 数据对象并将对象的值设置为数据属性。之后,它基本上与数据属性分离。
例子:
<div data-foo="bar"></div>
如果您使用 获取属性的值.data('foo')
,它将返回“bar”,如您所料。如果您随后使用更改属性.attr('data-foo', 'blah')
,然后再使用.data('foo')
来获取值,即使 DOM 显示 . 它也会返回“bar” data-foo="blah"
。如果您使用.data()
设置值,它将更改 jQuery 对象中的值,但不会更改 DOM 中的值。
基本上,.data()
用于设置或检查 jQuery 对象的数据值。如果您正在检查它并且它还没有,它会根据 DOM 中的数据属性创建值。.attr()
用于设置或检查 DOM 元素的属性值,不会触及 jQuery 数据值。如果您需要同时更改它们,则应同时使用.data()
和.attr()
。否则,坚持一个或另一个。
在 Jquery “数据”默认情况下不刷新:
alert($('#outer').html());
var a = $('#mydiv').data('myval'); //getter
$('#mydiv').data("myval","20"); //setter
alert($('#outer').html());
您将使用“ attr ”代替实时更新:
alert($('#outer').html());
var a = $('#mydiv').data('myval'); //getter
$('#mydiv').attr("data-myval","20"); //setter
alert($('#outer').html());
$(document.createElement("img")).attr({
src: 'https://graph.facebook.com/'+friend.id+'/picture',
title: friend.name ,
'data-friend-id':friend.id,
'data-friend-name':friend.name
}).appendTo(divContainer);
使用.data()
只会将数据添加到该元素的 jQuery 对象。为了将信息添加到元素本身,您需要使用 jQuery.attr
或本机访问该元素.setAttribute
$('div').attr('data-info', 1);
$('div')[0].setAttribute('data-info',1);
为了访问具有属性集的元素,您可以简单地根据您在帖子中注释的属性进行选择($('div[data-info="1"]')
),但是当您使用时,.data()
您不能。为了根据.data()
设置进行选择,您需要使用 jQuery 的过滤器功能。
$('div').data('info', 1);
//alert($('div').data('info'));//1
$('div').filter(function(){
return $(this).data('info') == 1;
}).text('222');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>1</div>
从 a 中获取文本
<option value="1" data-sigla="AC">Acre</option>
uf = $("#selectestado option:selected").attr('data-sigla');