193
$('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()

jsfiddle

4

6 に答える 6

489

.data()次の方法を使用します。

$('div').data('info', '222');

data-infoこれは実際の属性を作成しないことに注意してください。属性を作成する必要がある場合は、次を使用します.attr()

$('div').attr('data-info', '222');
于 2013-02-18T11:28:35.803 に答える
31

jQuery の .data() はいくつかのことを行いますが、データを属性として DOM に追加しません。これを使用してデータ属性を取得する場合、最初に行うことは、jQuery データ オブジェクトを作成し、オブジェクトの値をデータ属性に設定することです。その後、本質的に data 属性から切り離されます。

例:

<div data-foo="bar"></div>

を使用して属性の値を取得すると、.data('foo')予想どおり「バー」が返されます。次に を使用して属性を変更し.attr('data-foo', 'blah')、後で を使用.data('foo')して値を取得すると、DOM がdata-foo="blah". を使用.data()して値を設定すると、DOM ではなく jQuery オブジェクトの値が変更されます。

基本的に.data()は、jQuery オブジェクトのデータ値を設定または確認するためのものです。チェックしていて、まだ持っていない場合は、DOM にあるデータ属性に基づいて値を作成します。.attr()DOM 要素の属性値を設定または確認するためのものであり、jQuery データ値には触れません。両方を変更する必要がある場合は、 と の両方を使用する必要があり.data()ます.attr()。それ以外の場合は、どちらかを使用してください。

于 2015-02-07T00:02:34.227 に答える
16

Jquery の " data " はデフォルトでは更新されません:

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());
于 2016-02-08T17:31:12.497 に答える
5
 $(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);
于 2013-11-26T09:58:16.937 に答える