1

次のコードのn 個のコピーを生成する単純な PHP があります。

<p class="ShowSDB_L2" class="center" onClick="FSD_L2('<?php print dbG;?>','<?php print $sLID;?>')">Click Here to See Data</p>   
<div class="divSDB_L2">
</div>

PHP を使用して生成されるため、コピーの数は最初は不明です。

別のページには、次の Javascript があります (jQuery を使用)

function FSD_L2(dbG,SlID)
    {
        $(".divSDB_L2").load("test15.php?dbG="+dbG+"&SlID="+SlID).css('display','block');
    }

上のテキスト (ここをクリックしてデータを表示) をクリックすると、2 つの DIV タグの間に test15.php の内容が追加されます。

#Test15.php
<?php
$dbG = $_GET['dbG'];
$SlID = $_GET['SlID'];

print $dbG . " & " . $SlID;
?>

私が抱えている問題は、どのリンクがクリックされたかを判断する方法です。現在、3 つのコピーがあり、1 つをクリックすると、3 つのコピーすべてがアクティブ化されます。

私はこれを十分に明確にしたことを願っています。簡単な方法があるに違いないと確信していますが、私は Javascript/jQuery にまったく慣れていません。

4

4 に答える 4

2

あなたが困っていることを完全に理解しているかどうかはわかりませんが、次のようにします。

<p class="ShowSDB_L2" class="center" data-dbg="<?php print dbG;?>" data-slid="<?php print $sLID;?>">Click Here to See Data</p>   
<div class="divSDB_L2"></div>

$(document).ready(function() {
    $(document).on('click', 'p.ShowSDB_L2', function(evt) {
        var $p = $(evt.currentTarget),
            dbG = $p.data('dbg'),
            slid = $p.data('slid'),
            $div = $p.next();

        FSD_L2(dbG, slid, $div);
    });
});

function FSD_L2(dbG, SlID, $div)
{
    $div.load("test15.php?dbG="+dbG+"&SlID="+SlID).css('display','block');
}

pクリック ハンドラーは、各タグにハードコーディングされていません。代わりに、各pタグに必要なデータ、つまりdbg&を格納しslidます。

クリック ハンドラは で一度アタッチされdocument readyます。jQuery は、さまざまなブラウザーを抽象化し、そのハンドラーにeventオブジェクトを最初のパラメーターとして渡します。このオブジェクトを使用して、イベントが発生した要素を見つけることができます。参照: http://api.jquery.com/on/

最後に、クリックされた要素から必要なデータを取得し、div更新が必要な要素を見つけて、カスタム関数を呼び出します。

于 2013-07-25T16:00:21.393 に答える