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

ステートメントの最初の条件は、「div.link a」にクラス「home」があるかどうifを確認することです。したがって、最初の 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">...

于 2012-04-05T01:16:59.910 に答える