将选择器类的数据属性作为数组检索

Retrieve data attribute of a selector class as an array

本文关键字:数组 检索 数据属性 选择器      更新时间:2023-09-26

我正在运行一个PHP+JQuery+DataTables页面。一切都很顺利,我从以下方面得到了类似的分数:

.......
<tbody>
    <tr data='1'>
        ....
    </tr>
    <tr data='2'>
        ....
    </tr>
    <tr data='1'>
        ....
    </tr>
    <tr data='8'>
        ....
    </tr>
    <tr data='2'>
        ....
    </tr>
    <tr data='7'>
        ....
    </tr>
    <tr data='7'>
        ....
    </tr>
    .
    .
    .
</tbody>

我需要获得array中所有tr的所有data属性,在上表的情况下,它是:

var data_values = [1, 2, 8, 7];

我认为逻辑可能从$('tr').attr('data')开始,但它返回undefined。我已经对数据库进行了查询,它还返回了一个array:

var database_returned_values = [2, 8];

我从一开始的目标就是删除database_returned_values数组中找不到的tr元素。我的解决方案是从data_values中减去database_returned_values数组。差异将是要删除的tr。但我甚至无法开始获取data_values。如何检索所有trdata属性并将其放入array中,或者有更简单的方法吗?

在这种情况下,要移除的trs是具有[1, 7]data属性的那些;

您可以使用each()迭代所有tr:

var data = new Array();
$("table tbody tr").each(function(){
   if($.inArray($(this).attr("data")) == -1) // check if not in array
       data.push($(this).attr("data"))
})

data属性后面需要一些东西。

<tr data-id='7'>

然后jQuery有一个很好的方法可以使用,叫做data

$("tr").data("id")

您可以获取所有trs,然后对它们进行迭代。然后,你必须读取data-*属性(你不应该只使用data="anything")并添加到一个空数组中。然后,删除重复项。

只要你使用jQuery,你就可以使用:

<table>
    <tr data-id="1"></tr>
    <tr data-id="3"></tr>
    <tr data-id="1"></tr>
    <tr data-id="4"></tr>
    <tr data-id="4"></tr>
    <tr data-id="7"></tr>
</table>
var ids = [];
$("table tr").each(function(index, item) {
    ids.push($(item).data("id"));
})
alert($.unique(ids));

Fiddle:http://jsfiddle.net/chrisbenseler/s8pytwdz/

然后,迭代这个新数组($.unique(ids))并检查需要检查的内容。