Jquery 创建表值的列表/数组
我有一个表,其中有6个固定列,如下所示,还有动态创建的可变内容。在每列中,值只能出现一次,但不能出现在所有列中 是否有一种方法可以获得一个列表/数组,其中包含Cat列中的所有值和Vol列中的卷,如下面的示例变量 我的桌子: 这是工作演示 一种可能的办法:Jquery 创建表值的列表/数组,jquery,arrays,list,html-table,Jquery,Arrays,List,Html Table,我有一个表,其中有6个固定列,如下所示,还有动态创建的可变内容。在每列中,值只能出现一次,但不能出现在所有列中 是否有一种方法可以获得一个列表/数组,其中包含Cat列中的所有值和Vol列中的卷,如下面的示例变量 我的桌子: 这是工作演示 一种可能的办法: var itemsData = { item1: [], item2: [], item3: [] }; var $td = $('#myTable').find('td'); $.each(itemsData, functio
var itemsData = {
item1: [],
item2: [],
item3: []
};
var $td = $('#myTable').find('td');
$.each(itemsData, function(itemName) {
$td.filter(':contains(' + itemName + ')').each(function(el) {
itemsData[itemName].push(this.nextSibling.innerText);
});
});
。我将变量item1和item2替换为一个数据对象,将它们存储为属性。这种方法的关键部分是contains函数,该函数检查给定元素的文本内容是否为给定字符串
这种方法的另一种选择是为那些“header”元素提供特定的数据属性。例如:
<td data-item="item3">item3</td><td>5</td>
<td data-item="item2">item2</td><td>7</td>
...
试试这个:
$document.readyfunction{
var项目={
项目1:[],
项目2:[],
项目3:[]
};
$'myTable>tbody>tr'.eachfunction{
var cols=$this.find'td';
对于变量col=0;col<table id="myTable">
<thead>
<tr>
<th class="myHeader">Cat 1</th>
<th>Vol 1</th>
<th class="myHeader">Cat 2</th>
<th>Vol 2</th>
<th class="myHeader">Cat 3</th>
<th>Vol 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>item1</td><td class="item1">8</td><td>item2</td><td class="item2">7</td><td>item3</td><td class="item3">9</td>
</tr>
<tr>
<td>item3</td><td class="item3">5</td><td>item2</td><td class="item2">7</td><td>item1</td><td class="item1">4</td>
</tr>
<tr>
<td>item2</td><td class="item2">1</td><td>item1</td><td class="item1">5</td><td>item3</td><td class="item3">3</td>
</tr>
</body>
</table>
$(function(){
var item1=new Array();
var item2=new Array();
var item3=new Array();
$('.item1').each(function(){
item1.push($(this).html());
});
$('.item2').each(function(){
item2.push($(this).html());
});
$('.item3').each(function(){
item3.push($(this).html());
});
});
var itemsData = {
item1: [],
item2: [],
item3: []
};
var $td = $('#myTable').find('td');
$.each(itemsData, function(itemName) {
$td.filter(':contains(' + itemName + ')').each(function(el) {
itemsData[itemName].push(this.nextSibling.innerText);
});
});
<td data-item="item3">item3</td><td>5</td>
<td data-item="item2">item2</td><td>7</td>
...
$td.filter('[data-item="' + itemName + '"]').each(function(el) { // ...