jQuery在aspx文件中不起作用
jQuery doesn't work in the aspx file
我在stackoverflow上发现的JavaScript在我的代码中不起作用,但它在jsFiddle: https://jsfiddle.net/rxLg0bo4/9/
这是我如何使用内联jQuery在我的代码:
<nav id="menu">
<script type="text/javascript">
$('.menu_link').hover(function () {
$("#pnlSubmenu").slideDown('slow');
});
$('#pnlSubmenu').on("mouseenter", function () {
$(this).show();
});
$('#pnlSubmenu').mouseleave(function () {
$(this).hide();
});
$('.menu_link').mouseleave(function () {
$("#pnlSubmenu").hide();
});
</script>
<asp:Panel ID="pnlMenu" runat="server"></asp:Panel>
<asp:Panel ID="pnlSubmenu" runat="server">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</asp:Panel>
</nav>
这是我在脑子里写的:
<script src="/Scripts/auto-rotate.js"></script>
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/key-nav.js"></script>
<script type="text/javascript" src="/scripts/jquery.min.js"></script>
它应该使下拉菜单工作,但我认为jQuery没有得到执行
当您使用ASP时。NET控件生成的元素ID会不同。你应该使用Control。ClientID财产。
获取ASP.NET生成的HTML标记的控件ID。
还要将代码包装在文档就绪处理程序中。
使用指定一个在DOM完全加载时执行的函数。
$(function () {
$('#<%=pnlSubmenu.ClientID %>').click(function () {
//Rest of the code
})
})
你的JavaScript是直接执行的,而元素还没有呈现,因此没有元素可以添加事件。试着把你的代码放到document.ready()函数中。
$(document).ready(function()
{
$('.menu_link').hover(function () {
$("[id$=pnlSubmenu]").slideDown('slow');
});
$('[id$=pnlSubmenu]').on("mouseenter", function () {
$(this).show();
});
$('[id$=pnlSubmenu]').mouseleave(function () {
$(this).hide();
});
$('.menu_link').mouseleave(function () {
$("[id$=pnlSubmenu]").hide();
});
});
因为你使用的是webforms,所以元素的id会被改变。就像这里其他人建议的那样,你可以反驳这一点。你也可以像上面那样修改你的jQuery代码
控件的客户端id与asp.net中的服务器端id不同。在ID之前附加一些额外的字符。最好的解决方案是将class
设置为控件,并使用类选择器在jquery
中访问它们。
否则,您可以尝试以下解决方案:
$('.menu_link').hover(function () {
$("#pnlSubmenu").slideDown('slow');
}).mouseleave(function () {
$("#pnlSubmenu").hide();
});
$("[id$='pnlSubmenu']").on("mouseenter", function () {
$(this).show();
}).mouseleave(function () {
$(this).hide();
});
在asp.net控件上使用ClientIDMode="Static"
。您的Asp.Net
控件呈现不同的id
尝试将jquery代码放入Document中。函数,这将确保文档对象模型(DOM)为JavaScript代码执行做好准备。
$(function(){
//Your code here
});
同时删除重复的Jquery引用
<script src="/Scripts/jquery.min.js"></script>
<script src="/Scripts/key-nav.js"></script>
<script type="text/javascript" src="/scripts/jquery.min.js"></script>// Not needed
还要确保您使用正确的生成Id或使用Classes
作为选择器。
相关文章:
- 带有凭据的角度文件上载(CORS)不起作用
- html文件中的script标记根本不起作用
- grunt上的压缩文件夹不起作用
- 当我在浏览器中打开HTML文件时,javascript不起作用
- AJAX上传文件不起作用
- 在Hapi.js中提供静态JavaScript文件不起作用
- ngResource没有'从JSON文件解析HTML时不起作用
- jQueryAjax调用在单独的.js文件中不起作用
- PhoneGap读写文件获胜'不起作用
- 我尝试使用我的本地js文件来获取远程IP数据,但它不起作用
- 某些js文件在Drupal中不起作用
- 使用gulp-angular gettext从JS文件中提取字符串不起作用
- google.setOnLoadCallback()在单独的JS文件中不起作用
- css&js文件在php中不起作用
- 从HTML链接时,Javascript文件不起作用
- 如果在include文件中使用连接,Jquery ajax调用将不起作用
- php文件中包含的jquery文件在服务器上不起作用
- Cufon-builder-font-js文件在Fabric.js中不起作用
- 如果.htaccess文件中只写了一行代码,那么我所有的css和js都不起作用,如何修复它
- Haskell调用Node.js文件不起作用