检索jQuery集合元素的数据属性值

时间:2013-05-15 05:55:41

标签: jquery custom-data-attribute

这适用于第一场比赛:

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

但是如果我想获得所有元素选择器匹配的值,我会执行以下操作:

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

这感觉很愚蠢。是否有更简单的方法来获取所有元素的数据?

2 个答案:

答案 0 :(得分:10)

我认为没有一种内置的方法来制作你想要的数组。但是你可以使用$().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' );

答案 1 :(得分:0)

Michael Geary's answer above的启发,我提出了类似的解决方案。

这适用于任何想要检索数据属性并使用这些属性创建标记的人。

背景:我想从元素中检索数据属性,并使用同一动态标记中的那些数据属性动态创建html标记,以获取父级中的多个元素。这是我在阅读这篇文章后想出来的。这是一个事件时间表。

$({selector}).map(function() {
        var foo = $(this).data('foo');
        var bar = $(this).data('bar');
        $({anotherSelector}).append('<li><a href="#0" data-foo="'+foo+'">'+bar+'</a></li>');
});