我正在尝试在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);
});
})
答案 0 :(得分:2)
您遇到的第一个问题是ASP.Net Webforms在运行时更改了所有id
元素的runat="server"
,因此您无法通过它们进行选择。即使你可以,在这种情况下你会有重复,这是无效的。相反,您可以为这些元素添加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...
}
});
});
答案 1 :(得分:0)
考虑到上面提到的ASP.NET问题后,另一种选择是:
$(document).ready(function (){
var $hidden = $('.tableClass input.hiddenTouchableElements');
$hidden.each(function() {
if ($(this).val().toLowerCase() == 'true') {
// do something here...
}
});
});