【发布时间】:2018-06-27 19:02:00
【问题描述】:
我正在尝试设置一个复选框,该复选框将打开/关闭 ASP.NET GridView 中的所有复选框。我希望在客户端完成所有这些工作。无需回发。我想我可以使用 jQuery,因为它已经包含在项目中(jQuery v1.11)。
我以为我会为复选框分配一个独特的样式,并使用 jQuery 通过 css 类选择复选框,但事实证明 ASP.NET 正在渲染跨度内的复选框元素并将唯一的 CSS 样式分配给<span> 而不是复选框元素本身。
<span class="MyUniqueStyleName">
<input type="checkbox" .... >
</span>
什么样的 jQuery 选择器用于访问实际的复选框?我尝试了以下没有任何运气。
$('span.MyUniqueStyleName input')
这是我用来切换所有复选框的 jQuery。它位于 GridView 之后。 toggle 复选框具有 chkToggleAll 类。
<script>
$(document).ready(function () {
$('input.chkToggleAll').click(function () {
$('span.MyUniqueStyleName input').each(function () {
$(this).attr('checked', $('input.chkToggleAll').attr('checked'));
});
});
});
</script>
【问题讨论】:
-
您的选择器似乎没问题:jsfiddle.net/jLsx0y58/1。您是否有机会在 HTML 呈现之前运行它?请注意
$(function() {回调函数包裹在 JSFiddle 中的代码周围 - 它是“document.ready”的缩写形式,可确保代码在页面完全呈现并且目标 HTML 实际存在于 DOM 之前不会运行。 -
我已经在 GridView 渲染之后放置了脚本本身。我已经用我正在使用的脚本更新了这个问题。
-
input.chkToggleAll应该是span.chkToggleAll就像它在代码后面一样。我认为这只是一个错字。 -
@ADyson - 主切换复选框不是从 ASP.NET 控件呈现的,因此它只是一个标准的复选框元素
<input type="checkbox" class="chkToggleAll"> -
在这种情况下,这只是相反的问题,确定吗?上面sn-p中的
$('span.chkToggleAll input')应该是$('input.chkToggleAll')?
标签: jquery asp.net jquery-selectors