1

所以我的主要布局是这样的:

<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

如果有人可以提供帮助,将不胜感激。

4

1 回答 1

3

语句中的第一个条件if是检查是否有任何“div.link a”具有“home”类。因此,第一个 if 条件始终为真,并且您始终将 /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">...

于 2012-04-05T01:16:59.910 回答