我是网络开发的新手,所以我还在学习基础知识。
我只想在我的ASP .NET页面中添加一些jQuery。
在标题中,我引用了我需要的内容:
<head id="Head1" runat="server">
<link href="Content/Site.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="Scripts/jquery-2.0.2.js" ></script>
<script type="text/javascript" src="~/HeaderCheckBoxSelections.js"></script>
</head>
这就是~/HeaderCheckBoxSelections.js
的样子:
function SelectAllCheckBoxes(cbSelect) {
$('#<%=gvShows.ClientID%>').find("input:checkbox").each(function() {
if (this != cbSelect) {
this.checked = cbSelect.checked;
}
});
}
事件由此触发:
<HeaderTemplate>
<asp:CheckBox ID="cbSelectAll" runat="server" onclick="javascript:SelectAllCheckBoxes(this);"/>
</HeaderTemplate>
但是当点击复选框时,它会显示:
未处理的异常......
0x800a1391 - JavaScript runtime error: 'SelectAllCheckBoxes' is undefined.
我在这里遗漏了什么吗?我没有正确引用jQuery吗?
答案 0 :(得分:3)
中jquery选择器中的数据绑定
$( '#&LT;%= grdOperation.ClientID%GT;')
无法在单独的javascript文件中运行。该数据绑定必须在aspx标记上才能正确呈现。
您可以将数据绑定存储到您的aspx中,方法是将其存储到变量中,例如
<head id="Head1" runat="server">
<link href="Content/Site.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="Scripts/jquery-2.0.2.js" ></script>
<script type="text/javascript" src="~/HeaderCheckBoxSelections.js"></script>
<script type="text/javascript">
var grdOperationId = '<%=grdOperation.ClientID%>';
</script>
</head>
然后在你的javascript中通过变量引用它。
或者您可以使用“id ends with”选择器在js代码中选择它,只要页面上只有一个grdOperation即可。如:
function SelectAllCheckBoxes(cbSelect) {
$('[id$=grdOperation]').find("input:checkbox").each(function() {
if (this != cbSelect) {
this.checked = cbSelect.checked;
}
});
}
答案 1 :(得分:0)
试试这个:
<HeaderTemplate>
<asp:CheckBox ID="cbSelectAll" runat="server" onclick="SelectAllCheckBoxes(this);"/>
</HeaderTemplate>
ASP.NET Checkbox
控件实际上没有OnClick attribute
,也没有OnClientClick attribute
;因此ASP.NET只是像自定义属性一样传递属性,因为浏览器知道如何处理onclick
属性,它会尝试执行逻辑。
如果失败,那么正确加载实际.js
文件就会出现问题。您可以通过Chrome Developer Tools
,Firebug
或IE F12 Tools
验证.js
文件实际上是否在内存中?
以下是Chrome Developer Tools
的屏幕截图Scripts
,在Network
标签中过滤Microsoft's web site后的{{1}}: