1

データベースからナビゲーションを作成し、さまざまなカテゴリのプロジェクトを依頼します。したがって、基本的には、ナビゲーションの 2 つの部分があります。

最初の部分は、カテゴリ (文化、ウェブデザインなど) のナビゲーションです。これをクリックすると、このカテゴリのプロジェクトをデータベースに問い合わせ、PHP で新しいリンクを作成します。

$query="SELECT * FROM projects WHERE category=\"$category\"";

$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

$i=0;
while ($i < $num) {
$title=mysql_result($result,$i,"title");
$id=mysql_result($result,$i,"id");
echo "<div class=\"sublink\" data-id=\"$id\" ><a href=\"#\">$title<br />";
$i++;
}

しかし、カテゴリで行ったように、jQuery を使用してメイン ページからこれらのリンクを呼び出すことはできないようです。

<div class="link" data-subsite="design"><a href="#"> design *</a></div>
$(document).ready(function(){
$('.link').click(function(){
var subsite = $(this).data('subsite');
        $('#naviLeftContent').load('php/getNavi.php?category='+subsite);
    });
});

今、特定のテキスト/タイトル/情報を正しいdivにロードするために、サブナビゲーションで多かれ少なかれ同じことをしたいと思っていました。しかし、サブナビゲーションから新しく生成された div がソース コードにないように見えるため、JavaScript はそれらを認識しません。

4

1 に答える 1

1

あなたは探しているようですjQuery.on()(それぞれjQuery.live()、バージョン1.7の時点で非推奨です):

現在および将来において、現在のセレクターに一致するすべての要素のイベント ハンドラーをアタッチします。

編集:例:

HTML:

<div id="menu">
    <div id="category1">
        <a href="#">link 1</a>
        <a href="#">link 2</a>
    </div>
    <div id="category2"></div>
</div>

JS:

$(document).ready(function(){
    // Attach click handler
    $(document).on("click", "#menu a", function(){
        alert("click!");
    });

    // Now load menu content, click handler will also work for this
    $("#category2").load("content.php");
});



編集 2:チャットで見つかった解決策:

$('.link').click(function(){
    var subsite = $(this).data('subsite');
    $('#naviLeftContent').load('php/getNavi.php?category='+subsite);
});
$(document).on("click", ".sublink", function(){
    var subsite = $(this).data('subsite');
    $('#textContent').load('php/subsite.php?page='+subsite);
});



私の理解が正しいかどうかわかりませんが、ナビゲーションのコンテンツを AJAX 経由で読み込んでいますか? これは複雑すぎませんか?通常、ナビゲーション全体を PHP に生成させ、不要な部分を CSS で非表示にします。これには多くの利点があります。サーバー負荷の軽減、ユーザー エクスペリエンスの向上などです。

その上、PHP で MySQL の結果を反復処理すると、次のようにすると、はるかに読みやすくなります。

$result = mysql_query($query);
while ($row = mysql_fetch_object($result)) {
    echo $row->title;
}
于 2012-07-29T11:37:56.190 に答える