javascript - 为什么仅针对我所在的当前页面选中复选框

标签 javascript jquery html asp.net-mvc-4 checkbox

我实现了带有分页的表格。

这里是创建表的代码:

<table id="ContactsTable" class="display" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th>
                @Html.CheckBox("chkBoxAllEmails", new { onclick = "SelectAllEmails(this);" })
            </th>
            <th>
                First Name
            </th>
            <th>
                Last Name
            </th>
            <th>
                Email
            </th>
        </tr>
    </thead>
    @foreach (UserContact item in ViewBag.Contacts)
    { 
        <tr>
            <td>
                <input id = "@(("chkbox" + index++).ToString())"  name="chboxEmail"     type="checkbox"  value = "@item.email" onclick="SelectEmail(this); " />
            </td>
            <td>
                @item.firstName
            </td>
            <td>
                @item.lastName
            </td>
            <td>
                @item.email
            </td>
        </tr>
    }
</table>

以下是在表中创建分页的代码:

   <script>
        $(document).ready(function () {
            $('#ContactsTable').dataTable();
        });
    </script>

该表的外观如下:

enter image description here

如您所见,表格包含复选框列。当我检查复选框列的标题时 所有复选框都必须被选中。下面是实现它的 JS 代码:

    function SelectAllEmails(chboxSelectAllElements) {

        var chboxEmailsArray = document.getElementsByName("chboxEmail");        
        if (chboxSelectAllElements.checked) {

            for (var i = 0; i < chboxEmailsArray.length; i++) {
                chboxEmailsArray[i].checked = true;
            }
        }

        else {

            for (var i = 0; i < chboxEmailsArray.length; i++) {
                chboxEmailsArray[i].checked = false;
            }
        }
    }

这是我检查复选框标题后的样子:

enter image description here

但是当我在分页中选择第二页时,结果发现复选框未选中:

enter image description here

即复选框仅适用于当前分页页面。

我的问题是为什么没有选中所有复选框? 当标题中的复选框选中或取消选中时,我需要选中或取消选中所有复选框,有什么想法或示例如何在我的示例中实现它?

提前谢谢您。

最佳答案

使用于:

$(document).on('change', 'input[name="chboxEmail"]', function(e) {
    $('input:checkbox').not(this).prop('checked', this.checked);
});

然后使用 .on() 方法将点击事件委托(delegate)给将来添加到 DOM 的元素

关于javascript - 为什么仅针对我所在的当前页面选中复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25583482/

相关文章:

php - AJAX 变量作用域

javascript - 压缩链接记录的 javascript 数组的最有效方法是什么?

php - 删除操作在 ajax 中不起作用

html - 编辑 Joomla 模块 CSS

javascript - 仅针对新用户弹出模式 - bootstrap , php , js

javascript - 如何在semantic-ui api中显示结果

jquery - 网站完全加载后显示菜单项

javascript - 如何通过 ajax 加载样式表并在加载完成后进行回调

html - 如何让背景图像跨越网格布局

javascript - 未捕获的 DOMException : Not able to run codepen code on my html page