创建属性值数组,其中属性名称以特定字符串结尾

Create array of attribute values where attribute name ends with certain string

我正在尝试创建一个元素属性值数组,其中属性名称以字符串 "toselect" 结尾。我在页面上有很多这样的元素,但我只想要我单击的元素的值。我不知道 jquery .attr() 函数是否接受任何通配符。我正在使用 jquery,但我也会对纯 javascript anwser

感到满意

我知道这行不通,但我需要类似的东西。

var attrs[] = $(this).attr('*toselect');

html 看起来像这样

<div class="someclass" data-firsttoselect="somevalue1" data-secondtoselect="somevalue2" data-thirdtoselect="somevalue3"></div>

所以数组 'attrs' 应该包含 {somevalue1, somevalue2, somevalue3}

首先,那个HTML是无效的。您不能在不使页面无效的情况下向元素添加非标准属性,这可能会导致 UI 和 JS 问题。尝试改用 data-* 属性:

<div class="someclass" data-firsttoselect="somevalue1" data-secondtoselect="somevalue2" data-thirdtoselect="somevalue3"></div>

从那里您可以使用 map() 创建一个 *toselect 值的数组,并根据正则表达式测试该值,如下所示:

var data = $('.someclass').data();
var values = $.map(data, function(value, key) {
    if (/toselect$/i.test(key))
        return value;
});

Example fiddle