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

时间:2014-09-15 17:15:47

标签: javascript jquery datatables attributes html-table

我正在运行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>

我需要获取data中所有tr的所有array属性,以及上表中的情况:

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

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

var database_returned_values = [2, 8];

我的目标是从一开始就删除tr数组中找不到的database_returned_values元素。我的解决方案是从database_returned_values中减去data_values数组。差异将是要移除的tr。但我甚至无法开始取data_values。如何检索所有data的{​​{1}}属性并将其放在tr中,还是有更简单的方法可以执行此操作?

在这种情况下,要删除的arraytr属性为data的<{1}};

3 个答案:

答案 0 :(得分:1)

您可以使用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"))
})

答案 1 :(得分:1)

data属性需要有一些东西。

<tr data-id='7'>

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

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

答案 2 :(得分:0)

你可以得到所有的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));

小提琴:http://jsfiddle.net/chrisbenseler/s8pytwdz/

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