【发布时间】:2018-04-30 10:30:29
【问题描述】:
在一个页面,alphabet.php,在我的项目中,我在页面下方有一个侧边栏,用于在 Content div 中加载各种 php 页面。像这样:
HTML 侧边菜单
<nav id="sideMenu">
<ul class="list-unstyled components">
<li id="a"><a href="a.php">A</a></li>
<li id="b"><a href="b.php">B</a></li>
<li id="c"><a href="c.php">C <span class="caret"></span></a>
<ul>
<li id="c1"><a href="c.php#c1">C1</a></li>
<li id="c2"><a href="c.php#c2">C2</a></li>
</ul>
</li>
</ul>
</nav>
<div id="Content">
<h2>Lorem bla bla</h2>
<p>lorem bla bla </p>
</div>
JS
$(function() {
'use strict';
var newHash = '',
$content = $("#Content");
$("#sideMenu").delegate("a", "click", function() {
window.location.hash = $(this).attr("href");
return false;
});
$(window).bind('hashchange', function() {
newHash = window.location.hash.substring(1);
$content.load(newHash);
console.log(newHash);
});
});
单击顶部菜单和页脚导航时也应加载相同的内容。同时滚动到 Content div。
HTML 主菜单
<li class="dropdown"><a href="#alpha" class="dropdown-toggle" data-
toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
Alphabet <span class="caret"></span></a>
<ul class="dropdown-menu dropdown-menu-left" role="menu" id="alpha">
<li><a href="alphabet.php#a.php role="button" aria-expanded="false">A</a>
</li>
<li><a href="alphabet.php#b.php" role="button" aria-expanded="false">B</a>
</li>
<li><a href="alphabet.php#c.php role="button" aria-expanded="false">C</a>
<ul class="dropdown-menu dropdown-menu-left" role="menu">
<li><a href="c.php#c1">C1</a></li>
<li><a href="c.php#c2">C2</a></li>
</ul>
</li>
</ul>
</li>
我用这段代码解决了主菜单的 JS
$(function() {
'use strict';
if(location.hash) $('#Content').load(location.hash.substring(1));
$('#alphaa').click(function() {
$('#Content').load(this.hash.substring(1));
});
});
编辑:我将 MainMenu 中的 URL 更改为 alphabet.php#a.php 等,如果您在当前页面 (alphabet.php) 上,它将内容加载到 div 中。如果您在另一个页面上,则不会。
编辑 2:主菜单 JS 的解决方案。现在一切正常,但我想如果没有主菜单和侧菜单的两个不同的 js 函数,你可以让它更漂亮,但现在我对此很满意。有效!
【问题讨论】:
-
我希望这个链接能帮助link
-
@vikscool 我做了一个加载函数,但不能让它正常工作。不知何故, preventDefault 被覆盖,因为它加载页面但不在 Content div 中
标签: javascript html navigation