jQuery 按名称获取元素
jQuery get element by name
由于需要减少字符,我想将我们的 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;
但是 none 有效。我该怎么做?
请注意,至少在 Chrome 和 Firefox 中,如果 <td>
元素未包含在 <table>
标记中,则无法 select 元素。如果您不这样做,那是无效的 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');
重要节点:像在问题和接受的答案中那样获取数据并不是一个好主意。
- 你会 reselect/search 每个
<td>
元素
循环的迭代。这使得它变得不必要地慢。
- 您对
<tr>
标签使用的名称 属性 无效 HTML。正如 CBroe 中提到的那样。另请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Element/name 这就是为什么您应该通过 class 或 ID select 它的原因。
其实不需要jQuery写得更简洁:
document.querySelectorAll('[name=DPdays] td')[i].id
但如果你更喜欢 jQuery
$('[name=DPdays] td')[i].id
由于需要减少字符,我想将我们的 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;
但是 none 有效。我该怎么做?
请注意,至少在 Chrome 和 Firefox 中,如果 <td>
元素未包含在 <table>
标记中,则无法 select 元素。如果您不这样做,那是无效的 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');
重要节点:像在问题和接受的答案中那样获取数据并不是一个好主意。
- 你会 reselect/search 每个
<td>
元素 循环的迭代。这使得它变得不必要地慢。 - 您对
<tr>
标签使用的名称 属性 无效 HTML。正如 CBroe 中提到的那样。另请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Element/name 这就是为什么您应该通过 class 或 ID select 它的原因。
其实不需要jQuery写得更简洁:
document.querySelectorAll('[name=DPdays] td')[i].id
但如果你更喜欢 jQuery
$('[name=DPdays] td')[i].id