6

これは最初の一致で機能します。

 var attributeValue = $({selector}).data("myAttribute");

しかし、すべての要素セレクターの一致の値を取得したい場合は、次のようにします。

var attributes = [];
$.each($({selector})), function(k,v) { attributes.push($(v).data("myAttribute")); });

これはばかげているように感じます。すべての要素のデータを取得する簡単な方法はありますか?

4

2 に答える 2

13

あなたが望むように配列を作成する組み込みの方法はないと思います。しかし、確かにコードを少し単純化することができます$().map():

var attributes = $({selector}).map( function( i, element ) {
    return $(element).data( 'myAttribute' );
});

または、これが複数の場所で使用される可能性があるものである場合は、プラグインにすることができます。

$.fn.dataArray = function( name ) {
    return this.map( function( i, element ) {
        return $(element).data( name );
    });
};

この非常に単純なコードで呼び出します。

var attributes = $({selector}).dataArray( 'myAttribute' );
于 2013-05-15T06:19:12.843 に答える