使用jQuery循环遍历html表

时间:2010-01-16 00:31:07

标签: jquery html html-table

我有一个html表,我想基本上遍历每一行和每行的每个单元格,只需打印出结果。一件事是一些单元格有输入框,一些有选择下拉列表,一些单元格内有原始内容。

简单地浏览html表中的每个单元格并获取每个单元格的结果的最快方法是什么。对于选择下拉列表,我想要捕获选择的值(不是显示文本)。

4 个答案:

答案 0 :(得分:6)

在线演示:http://jsbin.com/ewazu

我首先在每个TD中循环,然后评估first-child是否为input元素。如果是,我们将返回其值。如果不是,我们会询问它是否产生文本。如果它产生文本,我们要求提供文本。如果它不生成文本,我们会请求TD

的HTML
$("table td").each(function(i,o){
  var value = ( $(":first-child", this).is(":input") ) 
    ? $(":first-child", this).val() 
    : ( $(this).text() != "" ) 
      ? $(this).text() 
      : $(this).html() ;
  alert(value);
});

答案 1 :(得分:2)

由于每个单元格中只有一个元素,您可以执行以下操作:

$("#myTable tr").each(function() {
    // this represents the row
    $("td > *", this).each(function() {
        // nodeName attribute represents the tag - "INPUT" if element is <input>
        // use the type attribute to find out exactly what type 
        // of input element it is - text, password, button, submit, etc..
        if(this.nodeName == "INPUT") {
            console.log($(this).attr("type"));
        }
    });
});

#myTable > tr表示获取某些<tr>个孩子的所有id="myTable"元素。

同样,td > *表示立即获取由<td>对象表示的this元素的所有子元素。这些都是CSS选择器,并且有多种方法可以在DOM中选择项目。请参阅jQuery docs以了解有关选择器的更多信息。

jQuery core文档是了解jQuery对象上所有可用方法的绝佳参考。

答案 2 :(得分:2)

很难知道完全你想要什么,但如果你可以假设选择框中的td只有那个,带输入的td只有一个文本字段,你可以这样做:http://jsbin.com/alara3/edit

答案 3 :(得分:-1)

您可以使用以下代码。

$(':input', '#tableId').val('');