简化动态jquery选择器

简化动态jquery选择器,jquery,Jquery,给出下表 <table id="t1" border="1"> <thead><tr><th>A</th><th>B</th><th>C</th></tr></thead> <tfoot><tr><td>0</td><td>1</td><td>2</td><

给出下表

<table id="t1" border="1">
  <thead><tr><th>A</th><th>B</th><th>C</th></tr></thead>
  <tfoot><tr><td>0</td><td>1</td><td>2</td></tr></tfoot>
<tbody>
  <tr><td>3</td><td>4</td><td>5</td></tr>
  <tr><td>6</td><td>7</td><td>8</td></tr>
  <tr><td>9</td><td>10</td><td>11</td></tr>
  <tr><td>12</td><td>13</td><td>14</td></tr>
  <tr><td>15</td><td>16</td><td>17</td></tr>
</tbody>
</table>
但是

b
将返回选择包括
。更多关于
b
结果的信息,第一个元素缺失

对于X列数的上述
var a
选择,最简单的方法是什么。 例如:


TIA用于在同一行中选择多个列:

$('#t1 tbody tr').find("td:nth-child(1), td:nth-child(3)");
要按规则间隔选择柱,请执行以下操作:

$('#t1 tbody tr td:nth-child(3n)'); //should get column 3, 6, 9, ...
由此推论,要获得从1开始的所有其他元素(在您的案例1和3中):

用于选择列[1,4,5,6,7,8,9]:

var cols = [1,4,5,6,7,8,9];
$('#t1 tbody tr td').filter(function(idx) {
    return $.inArray(idx+1, cols)!=-1;
});

是一种方法,用于将匹配元素集缩减为您想要使用的元素,在本例中为数组中指定的列索引。表达式返回
true
的任何值都包括在内注意:
.filter()中
idx是基于0的,因此如果数组中的值是基于1的,则添加1。

用于选择同一行中的多个列:

$('#t1 tbody tr').find("td:nth-child(1), td:nth-child(3)");
var arr = [1, 4, 5, 6, 7, 8, 9],
    rows = $('#t1 tbody tr'),
    tds = $('td', rows).map(function() {
        if ( $.inArray($(this).index(), arr) >= 0)
            return this;
    });
要按规则间隔选择柱,请执行以下操作:

$('#t1 tbody tr td:nth-child(3n)'); //should get column 3, 6, 9, ...
由此推论,要获得从1开始的所有其他元素(在您的案例1和3中):

用于选择列[1,4,5,6,7,8,9]:

var cols = [1,4,5,6,7,8,9];
$('#t1 tbody tr td').filter(function(idx) {
    return $.inArray(idx+1, cols)!=-1;
});
是一种方法,用于将匹配元素集缩减为您想要使用的元素,在本例中为数组中指定的列索引。表达式返回
true
的任何值都包括在内注意:
.filter()中,
idx是基于0的,因此如果数组中的值是基于1的,则添加1

var arr = [1, 4, 5, 6, 7, 8, 9],
    rows = $('#t1 tbody tr'),
    tds = $('td', rows).map(function() {
        if ( $.inArray($(this).index(), arr) >= 0)
            return this;
    });

--当然
:第n个子(奇数)
也可以工作--当然
:第n个子(奇数)
也可以工作
$。inArray()
不返回布尔值,它返回找到值的索引或-1(除索引0之外的所有真值)。另外,使用
$(this).index()
返回匹配集中元素的索引——在本例中,这意味着[0,1,2]重复5次。由于“1”是数组中唯一的实际值,其他值返回-1,这是真实的-因此它们传递。“1”位于索引0处,因此它是错误的且失败的——这是此方法实际返回第1列和第3列的唯一原因,纯粹是巧合:/
$。inArray()
不返回布尔值,它返回找到值的索引或-1(除索引0外,所有其他都是真的)。另外,使用
$(this).index()
返回匹配集中元素的索引——在本例中,这意味着[0,1,2]重复5次。由于“1”是数组中唯一的实际值,其他值返回-1,这是真实的-因此它们传递。“1”位于索引0处,因此它是错误的且失败的--这是此方法实际返回第1列和第3列的唯一原因,完全一致:/