12

私はulいくつかのアイテムを持っています。jqueryを使用してページを読み込んだ後、リストに動的にデータを入力します。各リストアイテムを追加するときに、jqueryの「.data()」関数を使用して、その要素のデータにも「itemID」を追加します。このようなもの:

var item = $('<li>My Item Name</li>');
item.data('itemID', '123ABC456');

後で、特定のitemIDを持つアイテムがアイテムリストにあるかどうかを判断するためのセレクターが必要です。最初に使用してみました:

$('*[data-itemID="123ABC456"]');

これは機能しませんでした。さらに調査したところ、この構文は、ページが読み込まれたときにデータ属性がDOMに設定されている場合にのみ機能することがわかりました。「.data」jqueryメソッドを動的に使用する場合は機能しません。

次に試しました:

$(':data(itemID==123ABC456)');

何らかの理由で、これは機能しません。$(':data(itemID)')ただし、単純に実行すると、データにitemIDを持つすべてのli要素が取得されます

.data()そのリストアイテムを呼び出すと、次のように、itemID属性が正しく設定されていることがわかります。

Object { itemID="123ABC456"}

データに「123ABC456」のitemIDを持つすべての要素を選択するにはどうすればよいですか?

4

3 に答える 3

11

http://jsfiddle.net/w28p9/1/ <-jsFiddleの例は、data-attributeとjquery.data()との違いを示しています

jQuery.data()検索しようとしているHTML5data-NAME属性とは異なります。

http://api.jquery.com/jQuery.data/

jQuery.data()は、jquery要素の内部に保存します(このデータはわかりにくいように見えません)。実際[data-itemID]の内部に次のものがあれば、検索は機能します<li data-itemID="12345"></li>

実際の隠されたものを取得して探すには、次のようにします.data()

// of course be more specific than just searching through all <li>'s
$('li').each(function () {
    if ( $(this).data('itemID') === '123ABC456' ) {
        // do whatever you wanted to do with it
    } 
});

お役に立てば幸いです。

于 2012-07-26T14:57:00.280 に答える
9

それ以外の

$(item).data('itemID', '123ABC456')

使用する

$(item).attr('data-itemID', '123ABC456')

その後、あなたは使用することができます

$('[data-itemID=123ABC456]') 

セレクターとして

于 2015-06-02T20:14:58.993 に答える
0

itemIDをDOMに配置するのはどうですか。

var item = $('<li itemID="'+itemid+">My Item Name</li>');
于 2012-07-26T16:46:04.320 に答える