我如何获得添加了某个 class 的所有元素的数组

How can i get an array of all elements with a certain class added

这是我正在尝试做的事情: 目前我有一个标签列表,它会在点击时对数据库中的一些数据进行排序,有没有办法得到一个被选择的元素列表?

<a href="javascript:;" class="tag tagId_4">Tag 4</a>
<a href="javascript:;" class="tag tagId_3">Tag 3</a>
<a href="javascript:;" class="tag tagId_2">Tag 2</a>
<a href="javascript:;" class="tag tagId_1">Tag 1</a>

这是此刻所做的事情:

$('.tag').click(function(){
        var id = $(this).attr('class');
            id = id.substr(10);
        $(this).addClass('tag_selected');
    });

我怎样才能得到一个包含 class tag_selected 的所有链接的 ID 列表?

如果查询匹配多个元素,jQuery选择器$()将return一个元素数组,所以:

$('.tag_selected');

将return全部。

就您的实施设计而言,我会改用 <a> 标记的实际 id 属性来存储元素的 id。

您可以使用类似这样的方法将每个选定元素的 id 编号检索到数组中:

var ids = $('.tag_selected').map(function() {
  return $(this).attr('id').match(/.+_(.+)/)[1];
}).get();    

该正则表达式基本上会匹配下划线之前的所有内容,然后捕获下划线和 return 之后的所有内容。最后的 [1] 正在访问数组 return 中的第二个项目,从 match 函数(这是第一个捕获的字符串)。

function getListOfSelectedElements() {
    var list = [];

    $(".tag_selected").each(function (index,  element) {
        var id = $(element).attr("id");
        if (id) {
            list.push(id);
        }
    });

    return list;
}

我相信通过使用“$(.tag-selected).each(someFunction)”并让函数为包含 class.

的单个元素做一些事情