从这些视频系列中逐步学习之后,我目前正在学习使用VS2013来制作ASP.NET应用程序:

https://www.youtube.com/watch?v=aUx2Bdx68f4

该视频是使用VS2010展示的

在其母版页中,当鼠标悬停在选项卡项上方时,它使用以下java脚本显示子菜单框:

  <script type="text/javascript" src="../JavaScript/jquery-1.11.3.min.js"></script>
  <script type="text/javascript">
    function mainmenu() {
      $("#nav ul").css({ display: "none" }); //Opera fix
      $("#nav li").hover(function () {
        $(this).find('ul:first').css({ visibility: "visible", display: "none" }).show(400);
      }, function () {
        $(this).find('ul:first').css({ visibility: "hidden" });
      });
    }

    $(document).ready(function () {
      mainmenu();
    });
  </script>

屏幕显示如下,当鼠标悬停在“管理”选项卡上时,将显示一个子菜单框。以下示例显示了我在~/Pages/About页面中的情况:

javascript - JS .hover可见性不起作用(ASP.NET,VS2013,Web表单)-LMLPHP

到目前为止,这没有问题,但是当我开始在名为“Account”文件夹的解决方案的“Pages”文件夹中的子文件夹中创建Web窗体时(如下图所示):

javascript - JS .hover可见性不起作用(ASP.NET,VS2013,Web表单)-LMLPHP

然后,将鼠标悬停以显示子菜单框不再起作用,而仅在我的“帐户”子文件夹中的页面上起作用。下面的示例是当我在~/Pages/Account/Login页面中时:

javascript - JS .hover可见性不起作用(ASP.NET,VS2013,Web表单)-LMLPHP

我在~/Pages/About~/Pages/Account/Login页面上使用了相同的母版页,并且在视频中(使用VS2010),效果很好。但这在我的应用程序中不起作用。任何人都可以解释为什么会这样吗?

最佳答案

感谢Suprabhat Biswal先生,我从他那里得到了这个答案(请参阅聊天)。

问题是因为在主页的javascript中,我把

<script type="text/javascript" src="../JavaScript/jquery-1.11.3.min.js"></script>

代替
<script type="text/javascript" src="<%=GetBaseURL%>/JavaScript/jquery-1.11.3.min.js"></script>

第一个使jquery始终相对于当前页面的路径执行。就我而言,这会使打开Login页时引用的jQuery位于localhost:64631/Pages/JavaScript/jquery-1.11.3.min.js中(错误),而不是localhost:64631/JavaScript/jquery-1.11.3.min.js中(正确)

为了解决这个问题,他建议我在我的web.config中添加一个名为BaseURL的键,并创建一个名为GetBaseURL的C#方法,该方法返回它们在Java脚本(第二个脚本)中使用的键值。现在,它可以正常工作! :)

关于javascript - JS .hover可见性不起作用(ASP.NET,VS2013,Web表单),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34282060/

10-13 01:55