我正在尝试将所有可见行的数据类型值推送到数组中,如何使用jquery执行此操作?
我做了类似的事情,但我很确定它不正确,因为它不起作用。
var myArray = [];
$('#myTableId tbody tr').each(function() {
myArray.push($(this).not('.class="hidden"').data('type'));
});
答案 0 :(得分:4)
使用map()并在循环前使用not()
var myArray = $('#myTableId tbody tr').not('.hidden').map(function(){
return $(this).data('type')
}).get();
您也可以对$.each
执行相同操作... not()
将保持不变
答案 1 :(得分:1)
As per my comment,您使用的选择器不正确。在.hidden
方法中使用.not()
就足够了,即:
var myArray = [];
$('#myTableId tbody tr').each(function() {
var t = $(this).not('.hidden').data('type');
if(!!t)
myArray.push(t);
});
这是一个概念验证示例:
$(function(){
var myArray = [];
$('#myTableId tbody tr').each(function() {
var t = $(this).not('.hidden').data('type');
if(!!t)
myArray.push(t);
});
console.log(myArray);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="myTableId">
<tbody>
<tr data-type="lorem"><td>lorem (not .hidden)</td></tr>
<tr class="hidden" data-type="ipsum"><td>ipsum (.hidden)</td></tr>
<tr data-type="dolor"><td>dolor (not .hidden)</td></tr>
</tbody>
</table>
&#13;
这假设你的标记也是正确的。
答案 2 :(得分:1)