我有一个5 td的表行。
我点击了行中的第二个td。我得到了它的背景颜色,并将它与同一行中其他td的背景颜色进行比较。
我想与行中的第4个td进行比较。我什么时候......
console.log($(this).eq(3).css("background-color"));
我得到“未定义”
当我这样做时
console.log($(this).next().next().css("background-color"));
返回颜色。
那么如何具体访问该行中的第4个td?
由于
编辑:html如下
<table id="table-fixtures" class="table table-condensed table-fixtures">
<thead>
<tr>
<th colspan="5">UPCOMING</th>
</tr>
</thead>
<tbody>
<tr>
<td><small>07-01-2014</small></td>
<td class="team">Alice</td>
<td><strong>v</strong></td>
<td class="team">Bob</td>
<td><small>12:00</small></td>
</tr>
<tr>
<td><small>07-01-2014</small></td>
<td class="team">Eve</td>
<td><strong>v</strong></td>
<td class"team">George</td>
<td><small>12:00</small></td>
</tr>
</tbody>
</table>
编辑:
jquery函数:
$('td.team').click( function() {
if ($(this).css("background-color") == clickColor) {
console.log($(this).eq(3).css("background-color"));
console.log($(this).next().next().css("background-color"));
}
});
答案 0 :(得分:1)
实际上this
只引用一个元素(点击),因此eq不会提取任何内容,因为它是:
给定一个表示一组DOM元素的jQuery对象,.eq() 方法从其中的一个元素构造一个新的jQuery对象 组。提供的索引标识此元素在中的位置 集。
因为您想要获取元素或其中一个兄弟姐妹,您可以使用siblings
并使用addBack
添加上一个元素,然后使用eq
代码:
console.log($(this).siblings().addBack().eq(3).css("background-color"));
答案 1 :(得分:0)
你可以试试这个,虽然我不使用jQuery,但在JSFiddle中有更多细节。
var rows = document.querySelectorAll('#table-fixtures tbody tr');
for (var i = 0, length = rows.length; i < length; i++) {
var col = rows[i].querySelector('td:nth-of-type(4)');
alert(window.getComputedStyle(col).backgroundColor);
}
答案 2 :(得分:0)
在您的代码$(this)
中代表一个 td元素,它只是 ONE element.so $(this).eq(3)< / strong>返回undefined。因为没有这样的元素。见documentation。
相反,您可以使用:
console.log($("td.team").eq(3).css("background-color"))