如何根据tr类名获取表td索引?

时间:2016-07-27 10:48:09

标签: javascript jquery c#-4.0

我有一个表格,下面详细介绍了如何根据tr类名称获取td索引

<Table id="#Hs_tbl">
    <thead>
        <th>country</th>
        <th>state</th>
        <th>city</th>
    </thead>
    <tr>
        <td>india</td>
        <td class="htInvalid">Bnagalore</td>
        <td class="htInvalid">mysore</td>
    </tr>
</table>

现在需要基于class =&#34; htInvalid&#34 ;;的td标签索引。这是我尝试过的,我只能获得一个TD名称,如何获得两个TD名称。这是我的代码:

var col = $("#Hs_tbl tr").find("td." + "htInvalid").index();

如何同时获取列名?

3 个答案:

答案 0 :(得分:1)

要么,您需要从表的ID属性中删除#

<table id="Hs_tbl">

或者,您需要在选择器中转义#元字符,如

$("#\\#Hs_tbl tr").find("td." + "htInvalid").index()

Docs

  

使用任何元字符(例如!“#$%&amp;'()* +,。/:;&lt; =&gt;?@ [] ^`{|}〜)作为文字作为名称的一部分,必须使用两个反斜杠进行转义:\\。

要获取所有文字,可以使用map()

var alltdtext = $("#\\#Hs_tbl tr").find("td.htInvalid").map(function(){
   return $(this).text();
}).get();

答案 1 :(得分:0)

首先需要转义id属性中的元字符:

$("#\\#Hs_tbl tr");

或使用属性等于选择器:

$("[id='#Hs_tbl'] tr")

为了获取文本,您可以使用.map()函数获取元素的文本属性的jquery对象以及.get()以将它们转换为数组:

var alltdtext = $("#\\#Hs_tbl tr").find("td.htInvalid").map(function(){
   return $(this).text();
}).get();

工作代码段

var alltdtext = $("#\\#Hs_tbl tr").find("td.htInvalid").map(function(){
   return $(this).text();
}).get();
console.log(alltdtext);
   <Table id="#Hs_tbl">
<thead>
    <th>country</th>
    <th>state</th>
    <th>city</th>
</thead>
<tr>
    <td>india</td>
    <td class="htInvalid">Bnagalore</td>
    <td class="htInvalid">mysore</td>
</tr>
</table>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

答案 2 :(得分:0)

您也可以直接使用课程.htInvalid并循环浏览每个课程以获取文字&amp;这是索引

var alltdtext = $(".htInvalid").each(function(){
 var a =$(this).text(); // Bangalore,mysore
 var index  =$(this).index(); //1,2
console.log(a ,index)
})

JSFIDDLE