VB项目中jQuery函数无法运行问题求助
咱们一步步梳理可能导致这个jQuery函数跑不起来的问题,结合你给出的代码细节逐一排查:
先确认jQuery是否真的加载成功
你代码里用了相对路径引用jQuery:<script src="Scripts/jquery-1.7.1.min.js"></script>,如果当前页面在子目录下,这个路径大概率找不到文件。建议改成根路径解析的写法,确保无论页面层级如何都能正确定位:<script src="<%= ResolveUrl("~/Scripts/jquery-1.7.1.min.js") %>"></script>另外打开浏览器F12的Network面板,刷新页面看看这个jQuery文件有没有404错误——这是判断加载是否成功最直接的方法。还可以把
alert('yo!');移到$(document).ready()里面,如果弹不出来,要么jQuery没加载,要么ready事件根本没触发。检查ASP.NET控件的实际渲染ID
你用$('#<%=lblNoRecords.ClientID%>')这种方式获取控件,但要注意两点:- 确认
lblNoRecords控件确实存在于当前页面的_mainContent内容块中,没有被遗漏; - 查看页面源码,看看这个控件实际渲染出来的ID是什么——ASP.NET母版页里的控件ID会自动加上容器前缀(比如可能变成
_mainContent_lblNoRecords),如果jQuery选择器里的ID和实际渲染的不一致,自然找不到目标元素。
- 确认
事件绑定冲突
注意到txtSearch控件上有原生的onkeyup="search()"属性,同时jQuery又绑定了keyup事件,这两个逻辑很可能互相干扰。要么删掉原生的onkeyup属性,要么确保两个事件的逻辑不会冲突。页面HTML结构不完整
你提供的代码最后是<asp:Label ID="lblAmount_VH" runat="server" Text='<%# CustomCDBL(Eval("Amount_VH")).ToString("#,###,###,##0") %>'></Ite,明显被截断了!GridView的ItemTemplate甚至整个asp:TemplateField都没闭合,这会导致浏览器解析DOM时出错,jQuery根本找不到对应的表格行,自然没法执行筛选逻辑。一定要补全完整的页面代码,确保所有标签都正确闭合。AjaxControlToolkit的版本冲突
页面引用了AjaxControlToolkit,有些旧版本的Toolkit自带了jQuery,或者和你用的1.7.1版本不兼容。可以先暂时注释掉Toolkit的引用,看看jQuery能不能正常运行;如果是版本问题,要么更换兼容的Toolkit版本,要么用jQuery.noConflict()隔离冲突:jQuery(document).ready(function ($) { // 这里可以继续用$作为jQuery的别名,避免冲突 $('#<%=lblNoRecords.ClientID%>').css('display', 'none'); // 剩下的代码保持不变 });母版页的重复jQuery引用
检查你的母版页(Site.master)里是不是已经引用了其他版本的jQuery?如果母版页引了不同版本,会覆盖全局的$对象,导致当前页面的jQuery代码失效。要是有重复引用,要么统一版本,要么用上面提到的noConflict方法解决。
内容的提问来源于stack exchange,提问作者theLuckyOne

