0

我在弹出窗口中有一个复选框列表。我在 jquery 中使用了 selectall checkboxlist items 函数。问题是当我检查全选复选框时,它会选择弹出窗口和网页中的所有复选框列表项。如何使其仅在弹出窗口中仅选择复选框列表项。我的代码为

 <td>   <div style="text-align: left; margin: auto;">
                    <asp:CheckBox ID="chkSelectReportAll" runat="server" Text="Select All" onclick="checkall()"/>
                    <asp:CheckBoxList ID="chkReportLst" runat="server">
                    </asp:CheckBoxList>
        </div>
 </td>

我的脚本为

function checkall() {
   $('#MainContent_uscOptionsPOPUP_chkSelectReportAll').click(
    function () {
     if (document.getElementById('chkReportLst'))                    
   $("INPUT[type='checkbox']").attr('checked', $('#MainContent_uscOptionsPOPUP_chkSelectReportAll').is(':checked'));
            });
        } 

有什么建议么 ??

4

5 回答 5

1

当然是,但在这样做之前,您必须在弹出窗口内的复选框中添加 class="popupCheckbox"

jQuery 1.6+

使用新的.prop()函数:

$(".popupCheckbox").prop("checked", true);
$(".popupCheckbox").prop("checked", false);

jQuery 1.5 及以下

.prop() 函数不可用,因此您需要使用.attr()

要检查复选框(通过设置选中属性的值)做

$('.popupCheckbox').attr('checked','checked')

和取消检查(通过完全删除属性)做

$('.popupCheckbox').removeAttr('checked')
于 2012-06-14T12:38:55.250 回答
1

为您的 分配一个 ID <div>,这样您就可以将选择器缩小到其中的输入。

<div id="cntCheckBoxList" style="text-align: left; margin: auto;">
    <asp:CheckBox ID="chkSelectReportAll" runat="server" Text="Select All" onclick="checkall()"/>
    <asp:CheckBoxList ID="chkReportLst" runat="server"></asp:CheckBoxList>
</div> 

选择器变为:

$("#cntCheckBoxList INPUT[type='checkbox']").attr('checked',    $('#MainContent_uscOptionsPOPUP_chkSelectReportAll').is(':checked')); 
于 2012-06-14T12:39:01.383 回答
0

更改此行

$("INPUT[type='checkbox']").attr('checked',
   $('#MainContent_uscOptionsPOPUP_chkSelectReportAll').is(':checked'));

$("#any_parent_in_popup INPUT[type='checkbox']").attr('checked',
       $('#MainContent_uscOptionsPOPUP_chkSelectReportAll').is(':checked'));

替换#any_parent_in_popup为弹出窗口内的任何父元素 ID,并包含所有复选框。如果您没有,您可以考虑添加一个。

于 2012-06-14T12:36:53.863 回答
0
function checkall() {
   $('#MainContent_uscOptionsPOPUP_chkSelectReportAll').click(function () {
      $("#chkReportLst INPUT[type='checkbox']").attr('checked', $('#MainContent_uscOptionsPOPUP_chkSelectReportAll').is(':checked'));
   });
} 
于 2012-06-14T12:38:37.553 回答
0

目前的问题是,当您使用 选择复选框时$("INPUT[type='checkbox']"),jQuery 正在查看整个页面上的所有复选框,正如您所提到的。

你想要的是属于的所有复选框chkReportLst

为了可读性,我倾向于将其作为 jQquery 子选择器,使用该.find()函数。

因此,首先选择您的复选框列表,然后使用 .find() 选择作为该列表子元素的复选框:

$("#chkReportLst").find("INPUT [type='checkbox']").attr('checked', $('#MainContent_uscOptionsPOPUP_chkSelectReportAll').is(':checked'));

于 2012-06-14T12:40:52.410 回答