我有一段时间让这个工作。应该很简单,但我尝试过的每条路线都没有奏效。这是我现在使用的 jQuery:
<script type="text/javascript">
$(document).ready(function () {
//filter list by year
$(function () {
$("#ddYear").change(function (evt) {
var year = $("#ddYear").val();
$('tr').show();
$("td[id^='AccessRequestID']").each(function () {
alert("Checking " + this.val);
if ($(this).attr("class") == ".AR_" + year) {
alert("Hiding " + this.val);
$(this).parent().hide();
}
});
});
});
});
</script>
这是我要过滤的表:
<div class="index-header">Select a Year to View: <%:Html.DropDownList("ddYear", Model.YearList, null %></div>
<table id="arTable">
<tr>
<th>
Year
</th>
<th>
Version
</th>
<th>
Name
</th>
</tr>
<% foreach (var item in Model.AccessRequests) { %>
<tr class="clickable">
<td id="AccessRequestID<%=item.Access_Request_ID%>" class="<%:string.Format("AR_{0}", item.RECORD_YEAR) %>">
<%: Html.DisplayFor(modelItem => item.RECORD_YEAR) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.VERSION_NO) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.EMPLOYEE_NAME) %>
</td>
</tr>
<% } %>
</table>
我最初尝试做这样的事情:
$("td[id^='AccessRequestID']").parent().hide().filter('.AR_' + year).show();
虽然这很好地过滤了行,但它并没有在应该有的时候取消过滤它们。所以我尝试$("td[id^='AccessRequestID']").parent().show;
先添加以重置它,但这并没有做任何事情。(我也尝试过.each()
,正如您在我上次尝试中看到的那样)。非常感谢任何建议或帮助!