jQuery按名称获取元素

时间:2016-09-12 12:16:09

标签: javascript jquery html getelementsbyname

由于必要的字符减少,我想将javascript转换为jQuery。这是我的HTML&的Javascript



var shorty = document.getElementsByName("DPdays")[0].getElementsByTagName("td")[i].id;

<tr class="DPtag" name="DPdays">
	<td id="MO">&nbsp;</td>
    <td id="DI">&nbsp;</td>
    <td id="MI">&nbsp;</td>
    <td id="DO">&nbsp;</td>
    <td id="FR">&nbsp;</td>
    <td id="SA">&nbsp;</td>
    <td id="SO">&nbsp;</td>
</tr>
&#13;
&#13;
&#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;

但没有效果。我怎么能这样做?

2 个答案:

答案 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');

重要节点:在问题和接受的答案中获取数据并不是一个好主意。

  1. 您将重新选择/搜索每个中的所有<td>元素 循环的迭代。这使它只是不必要地慢。
  2. 您对<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