嵌套转发器中所选复选框的计数

时间:2013-03-22 18:05:00

标签: jquery repeater

我需要找到Jquery中嵌套转发器内所选复选框的计数。我的代码如下:

<asp:Repeater runat="server" ID="myRepeater" OnItemDataBound="myRepeaterBinding">
  <asp:Repeater runat="server" ID="internalRepeater" OnItemDataBound="internalRepeaterBinding">
    <input class="chkToCompare" type="checkbox" runat="server" id="xxxx" />
  </asp:Repeater>
</asp:Repeater>

在我的按钮中单击我正在写一个函数,如:

var boxes = $('#' + '<%= myRepeater.ClientID %>').find($('.chkToCompare'));
var checkedLength = (boxes.filter(':checked').length);
alert(checkedLength);

但checkedLength总是0.有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:2)

ASP.NET转发器不会发出任何包装标记。除非您明确添加一个,否则您呈现的HTML中没有元素具有与<%= myRepeater.ClientID %>的输出匹配的ID。

您的计数方法正常,如this Fiddle中所示。

您只需要在外部转发器中包含您可以在DOM中找到的元素:

<div id="checkboxContainer">
    <asp:Repeater ...>
        ...
    </asp:Repeater>
</div>

然后寻找:

var boxes = $("#checkboxContainer .chkToCompare");

答案 1 :(得分:0)

在具有固定ID的div中使用您的转发器

<div id="repeaterContainer"></div>

使用Repeater时,您可以使用<thead></thead><tbody></tbody> html标记来包含标题和正文,并使用复选框计算<tbody></tbody>标记内的转发器项目。 然后点击你的按钮

var count=0;$("#repeaterContainer table>tbody>tr").each(function (i, elem) {
                var tr = $(this); if(tr.find("input[class=chkToCompare]").is(":checked")){count++;}}); alert(count);

这应该有用。