2

data 属性内で配列を使用する html 要素があります。

<div data-area='["North America", "United Kingdom"]'>Test</div>

さまざまな「もの」に関連する複数のデータ属性があります

<div data-area='["North America", "United Kingdom"]' data-job='["Programmer","Scientist"]'>test</div>

1 つの値に基づいて要素全体のすべてのデータ属性タグを検索するにはどうすればよいですか?

各データ属性をループするのではなく、セレクターを使用しようとしていますが、これは可能ですか?

これは、私が試みたことの例とフィドルです。

// search all data attributes of a div element that contains the given value and apply a hidden class
// this should search every data attribute for "Programmer"
$('[data-*="Programmer"]').addClass('hidden');

http://jsfiddle.net/pWdSP/1/

4

1 に答える 1

1

私はこの解決策しか考えられません:

$('body *').addClass(function() {
    var data = $(this).data();
    for (var i in data) if (data.hasOwnProperty(i)) {
        if (data[i].indexOf('Programmer') > -1) {
            return;
        }
    }

    return 'hidden';
});

http://jsfiddle.net/pWdSP/4/

すべての DOM ノードを反復するため、最適ではありませんが、data-*属性を持つすべてのノードを選択する他の方法はありません。

どのノードをチェックする必要があるかについてより正確な基準がある場合は、それに応じてセレクターを変更することを強くお勧めします (代わりにbody *)

于 2013-06-19T22:49:34.590 に答える