2

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

@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 。

4

5 回答 5

5

试试这个;

$("#trowId").attr("attrbuteName");
于 2014-03-07T21:23:08.650 回答
2

您可以通过类或 id 来获取值

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

或者

var ColumnName=$(row).attr("#ColumnName").val();
于 2012-09-20T10:21:11.767 回答
2

可能这会有所帮助。

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");
于 2012-09-20T10:32:09.700 回答
0

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

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

现在 columnName 是一个列名数组。

于 2012-09-20T10:21:48.490 回答
0

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

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

在该行中,将其定义为:

<tr data-ColumnName=@item.ColumnName ...
于 2012-09-20T10:23:03.150 回答