问题描述
 
     我正在尝试访问表行中的数据。 
     数据可以在<td>标记中,也可以在输入中以文本形式显示,或者在输入或按钮中以复选框显示。 
作为演示,我有一张小桌子:-
<table border="1">
  <tr>
    <td dir="ltr" id="test1" class="tLine" nowrap>Column One</td>
    <td><input type="checkbox" name="vehicle" value="Car" checked>Check Box.</td>
    <td>
      <button type="button" class="clicked">Update</button>
    </td>
  </tr>
</table>    
Javascript是:-
<script>
    $(".clicked").click(function() {
        var $row = $(this).closest("tr");       // Finds the closest row <tr> 
        var $tds = $row.find("td");             // Finds all children <td> elements
        $.each($tds, function() {               // Visits every single <td> element
           console.log($(this).text());        // Prints out the text within the <td>
         });
        console.log($tds[0].tagName); // 'TD'
        console.log($tds[1].tagName); // 'TD'
        $.each($tds, function(index, value) { // Visits every single <td> element
           console.log($tds[index].tagName); // 'TD'
           console.log($(this).tagName);  // Undefined
           console.log($(each).tagName);  // Fails
         });
    });
</script>
第二个循环中的每个到底是什么?如何使用它? 为什么$(this).tagName是未定义的?
获得TD元素后,我可以通过查看孩子来检查内容...
我也在查看javascript / jquery表选项,例如SlickGred,jsgrid和DataTables,但想首先了解上面的代码。
1楼 
  
    Daniel A. White 
    2 
    2015-07-26 11:17:13
  
 
  
     $(this)返回一个jQuery对象。 
     this是一个DOMElement 。 
2楼 
  
    nomve 
    2 
   已采纳 
    2015-07-26 11:33:13
  
 
 第二个循环中的每个到底是什么?如何使用它?
 
     如果您表示集合中的一个元素为value ,则为回调函数中的第二个参数。 
     但是,使用$.each也可以使用this 。 
为什么$(this).tagName是未定义的?
 
     因为$(this)实例化jQuery对象,并且jQuery对象中没有tagName属性。 
     您可以执行this.tagName或value.tagName 。 
 
     $tds[0].tagName起作用的原因是,尽管$tds是一个jQuery对象,但它也是一个“数组式”对象,因为包装在其中的所有单个元素都放在属性/索引中,例如'0' , '1'等。因此,当您执行$tds[0] ,会得到实际的元素,并且它具有tagName属性。