我有一个asp.net listview:
<asp:ListView ID="MyListView" runat="server" GroupItemCount="3" >
<LayoutTemplate>
<table>
<tr>
<td>
<table border="0" cellpadding="0">
<asp:PlaceHolder runat="server" ID="groupPlaceHolder"></asp:PlaceHolder>
</table>
</td>
</tr>
</table>
</LayoutTemplate>
<GroupTemplate>
<tr>
<asp:PlaceHolder runat="server" ID="itemPlaceHolder"></asp:PlaceHolder>
</tr>
</GroupTemplate>
<ItemTemplate>
<td>
<input class="Status-Checkbox" id="StatusCheckBox" runat="server"
type="checkbox" value=<%#Eval("StatusId")%> />
</td>
</ItemTemplate>
</asp:ListView>
在jquery中,我有:
var MyStatId=MyStatId
问题是,当呈现页面时,复选框具有动态ID。 所以我必须通过
过滤复选框类=状态-复选框
和价值,如:
$('.Status-Checkbox').find(value=MyStatId)
谁已经做过类似的事?
答案 0 :(得分:0)
这应该有用。
$('.Status-Checkbox[val="whatever"]').each(function(){//dostuff});
处理动态ID时。我更喜欢添加自定义属性而不是依赖ID。它确实使查找项目变得更加容易。例如,如果你使用你的PK名称(“fieldName”)作为属性,你可以很容易地找到它:
$('.Status-Checkbox[fieldName="whatever"]').each(function(){//dostuff});
)
IMO让您更清楚地了解您所寻找的内容(如果有其他人必须处理您的代码)。
答案 1 :(得分:0)
较新版本的ASP.net包含的功能可让您更好地控制ID。你可以考虑一下。
我还做了一些事情,其中动态创建的ID被写入Javascript变量,如var jsVariableName='<%= Me.Textbox1.ClientID %>';
。对于列表类型控件来说这有点挑战性,但我敢打赌它可以完成。
答案 2 :(得分:0)
您需要使用ASP.NET 4.0的新功能 - ClientIDMode。您可以为服务器控件设置一个选项,以明确指定其clientId生成的方式。在这种情况下,您可以使用静态模式:
<ItemTemplate>
<td>
<input class="Status-Checkbox" ClientIDMode="Static"
id="StatusCheckBox_<%#Eval("StatusId")%>" runat="server" type="checkbox" />
</td>
</ItemTemplate>
因此,您的复选框将包含
等IDStatusCheckBox_(YourStatusId1)
StatusCheckBox_(YourStatusId2)
等。 在生成的HTML中 所以你可以直接通过
访问它们$('#StatusCheckBox_' + MyStatId)...
但你应该检查这个ID是否是唯一的