由于需要减少字符,我想将javascript转换为jQuery。这是我的HTML&Javascript
var shorty = document.getElementsByName("DPdays")[0].getElementsByTagName("td")[i].id;
<tr class="DPtag" name="DPdays">
<td id="MO"> </td>
<td id="DI"> </td>
<td id="MI"> </td>
<td id="DO"> </td>
<td id="FR"> </td>
<td id="SA"> </td>
<td id="SO"> </td>
</tr>
我试过了:
var shorty = $('.DPtag > td:eq('+i+')').attr('id');
var shorty = $('[name=DPdays] > td:eq('+i+')').attr('id');
var shorty = $('[name=DPdays] > td:eq('+i+')').id;
但都不起作用。我该怎么做?
请注意,至少在Chrome和Firefox中,如果<table>
标记中未包含<td>
元素,则无法选择它们。如果你不这样做,这无论如何都不是有效的HTML。我假设i
是循环中的一个变量,用于获取所有id。在jQuery中,你可以这样做:
var $td = $('.DPtag td');
for (var i = 0; i < $td.length; i++) {
var shorty = $td[i].id;
console.log(shorty);
}
Fiddle:https://jsfiddle.net/q3q076tn/
编辑:当然,您可以在没有jQuery的情况下编写它,就像交换一样简单
var $td = $('.DPtag td');
带有:
var $td = document.querySelectorAll('.DPtag td');
重要节点:像在问题和公认答案中那样获取数据不是一个好主意。
- 您可以重新选择/搜索每个单个中的所有
<td>
元素循环的迭代。这让它变得不必要地慢 - 您将名称属性用于无效HTML的
<tr>
标记。如CBroe中所述。另请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Element/name这就是为什么您应该通过类或ID来选择它
实际上,您不需要jQuery来更简洁地编写它:
document.querySelectorAll('[name=DPdays] td')[i].id
但是如果你更喜欢jQuery
$('[name=DPdays] td')[i].id