0

我在没有使用母版页的情况下在 aspx 页面中运行以下 Jquery。带有脚本的标记如下。它工作得很好。

<body>
<form id="form1" runat="server">
<div>

    <asp:CheckBox ID="chkAll" runat="server" Text="Check All" /><br />

    <asp:CheckBoxList ID="cbList" runat="server">
    </asp:CheckBoxList>

</div>
</form>

这是脚本

<script src="Scripts/jquery-1.7.2.js" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function () {
        $('#chkAll').click(
         function () {
             $("INPUT[type='checkbox']").attr('checked', $('#chkAll').is(':checked'));
         });
    });    

 </script>

这是我使用母版页创建的页面的标记。母版页仅在 HeadContent 占位符的标头中具有对 jquery 文件的引用。不用说它在母版页场景中不起作用。为什么是问题

 <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
   The identical script from above is placed here

</asp:Content>

这是占位符内容标记

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">

<div>

    <asp:CheckBox ID="chkAll" runat="server" Text="Check All" /><br />

    <asp:CheckBoxList ID="cbList" runat="server">
    </asp:CheckBoxList>

</div>
</asp:Content>
4

4 回答 4

0

ID当 Webform 控件具有它们时,您不能使用它们提供的值runat="server"。ID 将更改为类似ctl1_chkAll的内容,您的脚本将失败。您需要使用以下内容引用他们的客户 ID:

$("#<%= chkAll.ClientID %>")

...这就是人们远离网络表单的原因。

于 2012-05-15T20:05:26.813 回答
0

这是因为,当我们使用母版页时,页面上呈现的控件 ID 是不同的。您应该执行以下操作以确保代码在这两种情况下都有效。

$("[id$='chkAll']").click() { function () {
    $("INPUT[type='checkbox']").attr("checked", $(this).attr("checked"));
});

希望这可以帮助!!

于 2012-05-15T20:06:54.450 回答
0

这听起来像是您的 jQuery 脚本的相对路径的问题,您应该使用您的网络调试器(FireBug、IE 工具栏等)来查看您的脚本是否正在加载。如果您的 Scripts 文件夹位于站点的根目录中,请将脚本 src 设置为“/Scripts/jquery-1.7.2.js”。

于 2012-05-15T20:10:14.743 回答
0

在您的控件上使用ClientIDMode="Static"应该允许您通过分配的名称来引用它。

<asp:CheckBox ID="chkAll" runat="server" Text="Check All" ClientIDMode="Static" />
于 2012-05-15T20:13:40.177 回答