所以我的主要布局是这样的:
<div class="menu">
<?php include('/menu.php'); ?>
</div>
<div class="main" id="content">
<?php include('/home.php'); ?>
</div>
在menu.php
我设置了4个div:
<div class="link current">
<a href="#" class="home">
Home
</a>
</div>
<div class="link">
<a href="#" class="about">
About
</a>
</div>
<div class="link">
<a href="#" class="forums">
Forums
</a>
</div>
<div class="link">
<a href="#" class="contact">
Contact
</a>
</div>
我将这个.js文件包含在索引页面的头部
$(function () {
$('div.link a').click(function () {
$('div.link').removeClass('current');
$(this).closest('div.link').addClass('current');
if($('div.link a').hasClass('home')) {
$('#content').load('/home.php');
} else if($('div.link a').hasClass('about')) {
$('#content').load('/about.php');
} else if($('div.link a').hasClass('forums')) {
$('#content').load('/forums.php');
} else if($('div.link a').hasClass('contact')) {
$('#content').load('/contact.php');
} else return false;
});
});
但它不起作用。
我是所有这一切的新手,并且已经使用互联网上的各种来源将这些代码拼凑在一起,在自己尝试并且无法解决之后,我来寻求帮助。
网站的层次结构就是这样。
-/
-res/
-css/
-default.css
-imgs/
-scripts/
-jquery.js
-load.js (this is the one shown above)
-index.php
-menu.php
-home.php
-about.php
-forums.php
-contact.php
如果有人可以提供帮助,我们将不胜感激。
答案 0 :(得分:3)
if
语句中的第一个条件是检查 any “div.link a”是否具有“home”类。因此,第一个if条件始终为true,并且您始终将/home.php加载到#content中。您要做的是检查点击的链接是否具有该类。
您应该使用if($(this).hasClass('home')) {
...
另外,如果你想稍微清理一下,我建议:
$('div.link a').click(function () {
$('div.link').removeClass('current');
$(this).closest('div.link').addClass('current');
$('#content').load('/' + $(this).attr('class') + '.php');
});
这样您就不必维护if
语句。但是,如果您最终为这些链接添加更多类,则会中断。也许使用data-*
属性? <a href="#" data-load="contact">
...