我正在尝试在 jQuery 中编写一个函数,该函数将遍历所有表行并通过特定的隐藏控件 ID“hdnIsEmpty”搜索隐藏字段值,问题是我不知道如何做到这一点隐藏控件ID,因为还有其他隐藏控件不一定要触摸... 也许还有其他方法可以得到我不想要的东西,但这是我不成功的尝试/方法,也是我所知道的唯一方法:
<udc:Repeater ID="repDetailedInformation" runat="server" DataSource='<%# Eval("DetailsInformation") %>'>
<table id="tblDetails">
<tbody>
<tr>
<td>
BLA-BLA-BLA Information
</td>
</tr>
<tr>
<td>
<udc:HiddenField ID="hdnIsEmpty" runat="server" Value='<%#Eval("IsEmpty") %>' />
</td>
</tr>
<tr>
<td>
<udc:HiddenField ID="hdnBlaBla" runat="server" Value='<%#Eval("BlaBla") %>' />
</td>
</tr>
<tr>
<td>
BLA-BLA-BLA Information
</td>
</tr>
</tbody>
</table>
和 jQuery:
<script type="text/javascript">
$(document).ready(function () {
function getHiddenBoolean(name) {
var selector = 'input:hidden[name$="' + name + '"]';
var field = $(selector);
return (field != null && field.length > 0) ? field.val().toLowerCase() == "true" : false;
};
var filteredRows = $('#tblDetails tr td').filter(function () {
return $(this).find('#hdnIsEmpty');
});
$.each(filteredRows, function () {
var isEmpty = getHiddenBoolean(filteredRows);
});
})
最佳答案
您遇到的第一个问题是 ASP.Net Webforms 在运行时更改所有 runat="server"
元素的 id
,因此您无法通过它们进行选择。即使可以,在这种情况下也会有重复项,这是无效的。相反,您可以向这些元素添加一个 class
来标识它们。
<tr>
<td>
<udc:HiddenField ID="hdnIsEmpty" runat="server" class="hiddenfield" Value='<%#Eval("IsEmpty") %>' />
</td>
</tr>
从那里你可以循环该类选择器,如下所示:
$(document).ready(function () {
$('#tblDetails tr td .hiddenfield').each(function() {
if ($(this).val().toLowerCase() == 'true') {
// do something here...
}
});
});
如果您无法在控件上添加 class
属性,则可以使选择器更通用:
$(document).ready(function () {
$('#tblDetails tr td input:hidden:first').each(function() {
if ($(this).val().toLowerCase() == 'true') {
// do something here...
}
});
});
关于javascript - Foreach 表行通过 ID 及其值查找特定控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37816172/