由于必要的字符减少,我想将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>
&#13;
我试过了那些:
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;
但没有效果。我怎么能这样做?
答案 0 :(得分:2)
请注意,至少在Chrome和Firefox中,如果<td>
标记中未包含<table>
元素,则无法选择它们。如果你不这样做,那么哪个HTML无效。
我假设i
是一个循环中的变量来获取所有id。在jQuery中你可以这样做:
var $td = $('.DPtag td');
for (var i = 0; i < $td.length; i++) {
var shorty = $td[i].id;
console.log(shorty);
}
小提琴:https://jsfiddle.net/q3q076tn/
编辑:当然你可以在没有jQuery的情况下编写它,就像交换一样简单:
var $td = $('.DPtag td');
使用:
var $td = document.querySelectorAll('.DPtag td');
重要节点:在问题和接受的答案中获取数据并不是一个好主意。
<td>
元素
循环的迭代。这使它只是不必要地慢。<tr>
标记使用name属性,该标记不是有效的HTML。正如 CBroe 中已经提到的那样。另请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Element/name这就是您应该通过类或ID选择它的原因。答案 1 :(得分:0)
实际上你并不需要jQuery来更简洁地写它:
document.querySelectorAll('[name=DPdays] td')[i].id
但如果您更喜欢jQuery
$('[name=DPdays] td')[i].id