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

Fdr*_*Fdr 4 jquery custom-data-attribute

这适用于第一场比赛:

 var attributeValue = $({selector}).data("myAttribute");
Run Code Online (Sandbox Code Playgroud)

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

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

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

Mic*_*ary 10

我不认为有一种内置的方法来制作你想要的数组.但是你可以用以下方法简化代码$().map():

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

或者,如果这可能在多个地方使用,您可以将其设为插件:

$.fn.dataArray = function( name ) {
    return this.map( function( i, element ) {
        return $(element).data( name );
    });
};
Run Code Online (Sandbox Code Playgroud)

并使用这个非常简单的代码调用它:

var attributes = $({selector}).dataArray( 'myAttribute' );
Run Code Online (Sandbox Code Playgroud)

  • 这里需要注意的一件事是 jQuery 的 `.map()` 函数返回一个 jQuery 对象,但有时您可能只需要底层数组。为此,只需在“.map(...)”末尾添加“.get()” (2认同)