0

データ属性値に基づいてjQuery(+ jQuery UI lib)でjavascriptを使用してアイテム(div、span、whatever ..)を選択する方法があるかどうか疑問に思っていました。たとえば、私が持っているとしましょう:

<div class="b">Hi</div>

次に、いくつかのデータを割り当てます。

$('.b').data('myKey', 1234);

次に、条件 myKey = 1234 を満たす div (または複数の div) を見つけたいと思います。たとえば、次のようにします。

var resultingElement = $('.b:data(myKey=1234)');

デフォルトで可能ですか、それともこの種のセレクターを自分で実装する必要がありますか? いいえ、HTML5 の可視 data-* 属性をこれに使用したくありません。

4

3 に答える 3

3

カスタム疑似セレクターを作成して、作業を簡単にすることができます:http: //jsfiddle.net/g2xKB/1/

$.expr.pseudos.data = $.expr.createPseudo(function(args) {
    var items = args.split(",");  // the arguments (key, value)

    $.each(items, function(i, item) {
        item = item.trim();
        var isString = /^['"]|['"]$/.test(item);
        item = item.replace(/^['"]|['"]$/g, "");  // remove quotes

        if(!isString) {
            item = +item;  // if no quotes, it's a number
        }

        items[i] = item;
    });

    return function(elem) {
        return $.data(elem, items[0]) === items[1];
    }
});

その後、次のように使用できます。

$(".b:data('myKey', 1234)").css("color", "red");
于 2012-10-26T21:43:32.950 に答える
1

これを試して

    $("div.b").filter(function() { 
          return $.data(this, "myKey") == 1234; 
    });
于 2012-10-26T21:41:27.483 に答える
0
var resultingElement = $('.b[data-myKey=1234]');

100% 確実とは言えませんが、ある時点でデータ属性のキャメル ケース セレクターに問題があったと思います。

于 2012-10-26T21:38:59.957 に答える