我有一个以下剃须刀来创建一个表。
@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。
答案 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 ...