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

时间:2015-12-15 05:55:58

标签: javascript c# asp.net visual-studio-2013 webforms

我目前正在学习使用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页面时的情况:

enter image description here

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

enter image description here

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

enter image description here

我对~/Pages/About~/Pages/Account/Login页面使用相同的母版页,并且在视频中(使用VS2010),它可以正常工作。但它在我的应用程序中不起作用。任何人都可以解释为什么会如此?

1 个答案:

答案 0 :(得分:1)

感谢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脚本中使用的键值(第二个脚本)。现在它完美无缺! :)