什么是'每个'在jQuery $ .each循环中?

时间:2015-07-26 11:15:42

标签: javascript jquery html-table

我正在尝试访问表格行中的数据。数据可以是<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元素后,我可以通过查看孩子来查看内容是什么......

我也在查看像SlickGred,jsgrid和DataTables这样的javascript / jquery表选项,但是想先了解上面的代码。

2 个答案:

答案 0 :(得分:2)

$(this)返回一个jQuery对象。 thisDOMElement

答案 1 :(得分:2)

  

第二个循环中的每一个究竟是什么?我如何使用它?

如果你的意思是集合中的一个元素是value,那么你的回调函数中的第二个参数。但是使用$.each,您也可以使用this执行此操作。

  

为什么$(this).tagName未定义?

因为$(this)实例化了一个jQuery对象,并且jQuery对象中没有tagName属性。您可以this.tagNamevalue.tagName

$tds[0].tagName的工作原理是虽然$tds是一个jQuery对象,但它也是一个“类数组”对象,因为包含在其中的所有单个元素都放在属性/中类似'0''1'等索引。因此,当您执行$tds[0]时,您将获得实际元素,并且它具有tagName属性。