如何使用jquery获取表行的属性值?

时间:2012-09-20 10:19:17

标签: jquery attributes

我有一个以下剃须刀来创建一个表。

@model IEnumerable<iBoxV5.Model.Common.AdvancedSearch>
<table id="SearchFieldsTable">
  <thead>
    <tr>
    <th>
        ColumnName
    </th>
    <th>
        FilterValues
    </th>
    <th>Updated Before</th>
    </tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr ColumnName=@item.ColumnName DatabaseColumn=@item.DatabaseColumn DisplayName=@item.DisplayName Datatype=@item.Datatype id=@(index++)>
    <td>
        @Html.DisplayFor(modelItem => item.ColumnName)
    </td>
    <td>
        @Html.TextBoxFor(modelItem => item.FilterValue, new { @class = "FrmTextBox advSearch" });

        @Html.TextBoxFor(modelItem => item.FilterValue, new { @class = "FrmTextBox advSearch" });
    </td>
    <td>
        @Html.TextBoxFor(modelItem => item.FilterValueTo, new { @class = "FrmTextBox advSearch" });
    </td>
</tr>
}
</tbody>
</table>

在上面我添加了类似ColumnName的几个属性。

我想为表的每一行构建一个JSON。

我尝试使用以下jquery Snippet。

var SearchFieldsTable = $("#SearchFieldsTable tbody");

var trows = SearchFieldsTable[0].rows;

$.each(trows, function (index, row) {
    var ColumnName=$(row).attr("ColumnName");
});

但是上面没有返回我期望的ColumnName。

5 个答案:

答案 0 :(得分:4)

试试这个;

$("#trowId").attr("attrbuteName");

答案 1 :(得分:2)

您可以通过类或ID获取值,如

var ColumnName=$(row).attr(".ColumnName").val();

var ColumnName=$(row).attr("#ColumnName").val();

答案 2 :(得分:1)

可能会有所帮助。

var SearchFieldsTable = $("#SearchFieldsTable tbody");

var trows = SearchFieldsTable.children("tr");

$.each(trows, function (index, row) {
    var ColumnName=$(row).attr("ColumnName");
    // .... Your codes here 
});

<强>供参考: “tbody”没有“行”。以下是错误的

SearchFieldsTable[0].rows

您可以使用以下代码来使用上面的代码。

var SearchFieldsTable = $("#SearchFieldsTable");

答案 3 :(得分:0)

您在每次迭代中定义一个局部变量,现在您的ColumnName变量只存储最后一行的属性。此外ColumnName也不是有效的属性。您可以使用data-*属性和map方法。

var columnName = $("#SearchFieldsTable tbody tr").map(function(){
                      return $(this).data('ColumnName')
                 })

现在columnName是一个列名数组。

答案 4 :(得分:0)

某些浏览器不支持自定义属性。因此,您可以更好地使用data()

var ColumnName = $(row).data("ColumnName");

在行中,将其定义为:

<tr data-ColumnName=@item.ColumnName ...