我正在尝试选择所有具有1,2的数据属性id的行。我可以通过单独指定每一行来实现,但这不是最好的方法,有人可以把我放在正确的方向吗?
<table id="eTable">
<tr data-empid="A123" data-salary="120" data-status="drone">
<td>Peter</td><td>Vogel</td><td>Principal</td>
</tr>
<tr data-empid="B456" data-salary="130" data-status="worker">
<td>Jan</td><td>Vogel</td><td>General Manager</td>
</tr>
<tr data-empid="C789" data-salary="110" data-status="worker">
<td>Jason</td><td>van de Velde</td><td>Company nurse</td>
</tr>
</table>
选择
var getFromWebServices = //GetFromWebServices() //result lets assume A123; B456
$("#eTable tr[data-empid='A123; B456']").hide(); // hide is here for an example, I want to get object with all rows for matching IDs
我希望它是动态的。我希望这个选择器获得带有empid A123的行; B456在这个特定情况下
小提琴
http://jsfiddle.net/k6sx2313/2/
修改
为什么这不会一个接一个地返回所有行, http://jsfiddle.net/k6sx2313/10/
答案 0 :(得分:3)
假设您在数组中获取id(idArray),执行for
循环并使用相应的data-empid隐藏每个元素:
var idArray = ['A123','B456'];
for (var i=0;i<idArray.length;i++) {
var id = idArray[i];
$("#eTable tr[data-empid=" + id + "]").hide();
}
答案 1 :(得分:1)
使用filter()
过滤data-empid
元素,并使用indexOf()
检查数组中是否存在每个值
var arr = ['A123', 'B456']
$("#eTable tr[data-empid]").filter(function () {
return arr.indexOf($(this).attr('data-empid')) != -1;
}).hide();
<强> demo 强>
答案 2 :(得分:0)
属性选择器一次只能处理一个值,因此您需要使用两个选择器,用逗号分隔:
$("#eTable tr[data-empid='A123'], #eTable tr[data-empid='B456']").hide();
如果您是以编程方式查找值,可以将它们放在使用filter()
的数组中:
var values = [ 'A123', 'B456' ];
$('#eTable tr').filter(function() {
return $.inArray($(this).data('empid'), values) != -1;
}).hide();
答案 3 :(得分:0)
试试这个:
var getFromWebServices = ['A123', 'B456'];
$("#eTable tr[data-empid=" + getFromWebServices.join("], #eTable tr[data-empid=") + "]").hide();
&#13;
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<table id="eTable">
<tr data-empid="A123" data-salary="120" data-status="drone">
<td>Peter</td><td>Vogel</td><td>Principal</td>
</tr>
<tr data-empid="B456" data-salary="130" data-status="worker">
<td>Jan</td><td>Vogel</td><td>General Manager</td>
</tr>
<tr data-empid="C789" data-salary="110" data-status="worker">
<td>Jason</td><td>van de Velde</td><td>Company nurse</td>
</tr>
</table>
&#13;