【问题标题】:JS Mobile Navigation isn't workingJS 移动导航不起作用
【发布时间】:2018-02-03 07:03:39
【问题描述】:

我正在尝试编写新网站的代码,但遇到了 JS 文件没有响应导航文件的问题。

Head 和 Navigation 文件都是我网站中的 .php 文件。测试站点可以在这里找到:http://testsite.laurenkapraun.com/

我仍在努力使网站的其余部分具有响应性,但我首先关注的是导航。

如果我遗漏了任何有用的信息,请告诉我。谢谢!!

我在下面包含了代码:

$(document).ready(function() {
  $(".mobile .header .menu-toggle").click(function() {
    $(this).parent().next(".mobile .primaryMenu").toggle(0, "display");
  });
});
/*Navigation*/

@media screen and (max-width: 738px) {
  .line {
    display: block !important;
    width: 30px;
    height: 2px;
    margin: 10px 10px;
    background-color: black;
    margin-top: 0px;
  }
  .menu-toggle:hover {
    cursor: pointer;
  }
  .primaryMenu ul {
    padding: 0;
    margin: 0;
    list-style-type: none;
  }
  .mobile {
    display: block !important;
    background: #f7f6f1 !important;
    padding-top: 10px;
  }
  .mobile .primaryMenu {
    width: 100%;
    height: 100%;
    display: none;
    text-align: center;
  }
  .mobile .primaryMenu li a {
    color: #989AA4;
    display: block;
    padding: 15px 20px;
  }
  .mobile .primaryMenu li a:hover {
    background-color: #8a43a3;
    color: #fff;
  }
  .primaryMenu li {
    display: block;
  }
  .primaryMenu .wrap {
    padding: 0px;
  }
}
<!--Head-->
<head>
	<meta charset="UTF-8">
	<title><?php if ($thisPage!="") echo " $thisPage"; ?> | Lauren Kapraun Portfolio</title>
	<meta name="title" content="<?php if ($thisPage!="") echo " $thisPage"; ?>" | Lauren Kapraun Portfolio />
	
	<!--CSS-->
	<link rel="stylesheet" href="includes/main.css" type="text/css" media="all">
	<link rel="stylesheet" href="includes/mobile.css" type="text/css" media="all">
	
	<!--JS-->
	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
	<script type="text/javascript" src="includes/nav.js"></script>
	
	
	<!--External-->
	<link href="https://fonts.googleapis.com/css?family=Josefin+Sans" rel="stylesheet"> 
</head>


<!--Navigation-->
<div class="mobile">
	<div class="header">
		<div class="menu-toggle">
			<div class="line"></div>
			<div class="line"></div>
			<div class="line"></div>
		</div>
	</div>

	<nav id="menu-top" role="navigation" aria-label="Top Menu" style="transition: max-height 350ms ease 0s; position: relative;" aria-hidden="false">
		<div class="primaryMenu">
			<div class="wrap">
				<ul id="menu-top-items">
					<li<?php if ($thisPage=="Home") echo " class=\"currentPage\""; ?>><a href="../index.php">Home</a></li>
					<li<?php if ($thisPage=="Technical") echo " class=\"currentPage\""; ?>><a href="../technical.php">Technical</a></li>
					<li<?php if ($thisPage=="Visual") echo " class=\"currentPage\""; ?>><a href="../visual.php">Visual</a></li>
					<li<?php if ($thisPage=="Video") echo " class=\"currentPage\""; ?>><a href="../video.php">Video</a></li>
					<li<?php if ($thisPage=="Sound") echo " class=\"currentPage\""; ?>><a href="../sound.php">Sound</a></li>
					<li<?php if ($thisPage=="Contact") echo " class=\"currentPage\""; ?>><a href="../contact.php">Contact</a></li>
				</ul>
			</div>
		</div>	
	</nav>
</div>

【问题讨论】:

  • 你的 php 页面是否在根文件夹中维护了 js?
  • 首先检查jQuery文件并将其包含在页面底部以便更快地运行。

标签: javascript php html css mobile


【解决方案1】:

我在控制台中注意到访问您的网站时显示 未捕获的 SyntaxError:意外的令牌

这一行

$(this).parent().next(".mobile .primaryMenu").toggle(0, "display");

.primaryMenu 实际上包裹在导航中,这可以简化为

$(".primaryMenu").toggle(0, "display");

$(document).ready(function() {
  $(".mobile .header .menu-toggle").click(function() {
    $(".primaryMenu").toggle(0, "display");
  });
});
 .line {
    display: block !important;
    width: 30px;
    height: 2px;
    margin: 10px 10px;
    background-color: black;
    margin-top: 0px;
  }
  .menu-toggle:hover {
    cursor: pointer;
  }
  .primaryMenu ul {
    padding: 0;
    margin: 0;
    list-style-type: none;
  }
  .mobile {
    display: block !important;
    background: #f7f6f1 !important;
    padding-top: 10px;
  }
  .mobile .primaryMenu {
    width: 100%;
    height: 100%;
    display: none;
    text-align: center;
  }
  .mobile .primaryMenu li a {
    color: #989AA4;
    display: block;
    padding: 15px 20px;
  }
  .mobile .primaryMenu li a:hover {
    background-color: #8a43a3;
    color: #fff;
  }
  .primaryMenu li {
    display: block;
  }
  .primaryMenu .wrap {
    padding: 0px;
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mobile">
	<div class="header">
		<div class="menu-toggle">
			<div class="line"></div>
			<div class="line"></div>
			<div class="line"></div>
		</div>
	</div>

	<nav id="menu-top" role="navigation" aria-label="Top Menu" style="transition: max-height 350ms ease 0s; position: relative;" aria-hidden="false">
		<div class="primaryMenu">
			<div class="wrap">
				<ul id="menu-top-items">
					<li<?php if ($thisPage=="Home") echo " class=\"currentPage\""; ?>><a href="../index.php">Home</a></li>
					<li<?php if ($thisPage=="Technical") echo " class=\"currentPage\""; ?>><a href="../technical.php">Technical</a></li>
					<li<?php if ($thisPage=="Visual") echo " class=\"currentPage\""; ?>><a href="../visual.php">Visual</a></li>
					<li<?php if ($thisPage=="Video") echo " class=\"currentPage\""; ?>><a href="../video.php">Video</a></li>
					<li<?php if ($thisPage=="Sound") echo " class=\"currentPage\""; ?>><a href="../sound.php">Sound</a></li>
					<li<?php if ($thisPage=="Contact") echo " class=\"currentPage\""; ?>><a href="../contact.php">Contact</a></li>
				</ul>
			</div>
		</div>	
	</nav>
</div>

【讨论】:

  • 我已经更新了上面的代码。控制台中的错误消失了,但我仍然遇到菜单无法打开的问题。
  • 我刚刚更新了我的答案,主菜单实际上包装在一个导航容器中。见上文。
  • 很抱歉再次打扰您,在将我的网站推送到 public_html 文件夹的过程中,移动菜单再次停止工作。你介意看一下吗?我不确定自从进行更新后会发生什么变化:laurenkapraun.com
  • 您的网站使用的是 https,但 jQuery 正在加载 http,请尝试使用 https,例如:ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
猜你喜欢
  • 2018-01-11
  • 1970-01-01
  • 2018-03-16
  • 2018-09-02
  • 2020-08-22
  • 2013-08-21
  • 1970-01-01
  • 2015-07-01
  • 2015-10-27
相关资源
最近更新 更多