0

私は使用しました

var activeFilter = $('<li></li>').data('input-id', 'mycustomId');
$('#container').append(activeFilter);

ここで、既知の < ul > 内の複数の < li > 要素から特定の < li > 要素を取得する必要があります。

ただし、明らかなセレクターは機能しません。

var existing = $('li[data-input-id=mycustomId]');
alert(existing.length);

便利なリンク: .prop() と .attr() データ属性を持つ要素を取得、設定、選択する方法は?

概要:

.prop()DOM プロパティを設定/取得します。例: className

.attr()TAG ATTRIBUTES.. などのクラスを設定/取得し、セレクターを$('obj[class=xxx]')可能にします。

.data()jQuery の内部キャッシュ属性を設定/取得し、属性またはプロパティにマップしません。

ただし、html5 ATTRIBUTES では、.attr()接頭辞を含む設定で"data-"正しくアクセスできますが、その逆で.data()はありません!!

http://jsfiddle.net/wjEvM/

デバッガーにはプロパティ data-input-id がリストされていませんが、次の方法でアクセスできます

$('#container li:firstchild').data('input-id');

obj.getChildWithData('data-id', 'mycustomId'); 問題は、各 li のデータセットをチェックするループ内の OTHER THAN のように、与えられたデータセットの値を持つ li (オブジェクト ie) をどのように取得するか (どのセレクターを使用する必要があるか)です。または、ばかげた document.querySelectorAll を使用します。これは、必要なことを実行しないためです。

そのように動作するはずの場合、該当する場合は説明してください。属性として設定された data-* 属性を取得しても、html5 で推奨されている .data() を使用できません。だから私はそれを正しくしたい。

4

2 に答える 2

2

ここで属性セレクターを使用しています。これは、HTML5 データを次のように設定すると機能します。

activeFilter.attr('data-input-id', 'mycustomId');

ただし、正しいシンタックスを使用してアクセスする必要があります。

$('#container li:firstchild').data('inputId');

コメントに答えるには、.filter() を使用して取得できます。

var existing = $('li').filter(function(){return $(this).data('inputId') === "mycustomId"});

デモを見る

于 2013-04-23T13:54:31.097 に答える
0

.data()残念ながら、あなたの方法では、jQuery はDOM ノードのdata属性を介してデータ セットを保存しません(この質問を参照してください)。

代わりに、で設定して.attr()から、次を使用できます$('li[data-input-id=mycustomId]')

$('<li></li>').attr('data-input-id', 'mycustomId');
于 2013-04-23T13:55:57.470 に答える