0

私はプライベート メッセージ システムを作成しています。同じクラスの div をエコーするように php を設定しましたが、id = を行 ID に設定しました。以下のコードを調べてください。

function Load()
{

$Connect = new mysqli("localhost", "root", "", "Data");
session_start();
$User = $_SESSION['Username'];
$Stats = 'SELECT * FROM Messages WHERE User="'.$User.'"';

if($Result = $Connect->query($Stats))
{
    while($Row = $Result->fetch_assoc())
    {
        $From = $Row['FUser'];
        $Date = $Row['Date'];
        $Title = $Row['Title'];
        $ID = $Row['ID'];

        echo '<div id="'.$ID.'" class="String"><label class="TText" style="cursor:pointer;">From: ' . $From . ' - ' . $Date . ' - ' . $Title .'</label></div>';
    }
}

}

私のJQuery:

$('.String').click(function()
{
    var Msg = $('#MMsg');
    var Back = $('#Back');
    var Str = $('.String');
    Str.fadeOut('fast', function()
    {
        Msg.fadeIn('fast');
        Back.fadeIn('fast');
        var ID = $('.String').attr('id');

        $.ajax
        ({
            url:'MLoad.php',
            type:'POST',
            data:{ID:ID},
            dataType:'json',
            success:function(MText)
            {
                $('#MMBox').html(MText.T);
            }
        });
    });
});

var ID を警告すると、両方の div で同じ結果が得られますが、html では ID がそれぞれ異なります。つまり、両方のアラート ボックスで毎回最初の ID が表示されます。

4

2 に答える 2

2

$(this) を使用して、fadeOut が適用されている要素の ID を取得します。そうしないと、最初に一致した div の ID しか取得できません。

var ID = $(this).attr('id');

于 2013-02-11T03:04:42.613 に答える
0

クリック機能では、クリックthisされた項目を参照します。したがって、クリック$(this).attr('id')されたのIDを取得するために使用できます。.String

$('.String').click(function()
{
    var id = $(this).attr('id');
    var Msg = $('#MMsg');
    var Back = $('#Back');
    var Str = $('.String');
    Str.fadeOut('fast', function()
    {
        Msg.fadeIn('fast');
        Back.fadeIn('fast');

        $.ajax
        ({
            url:'MLoad.php',
            type:'POST',
            data:{ID:id},
            dataType:'json',
            success:function(MText)
            {
                $('#MMBox').html(MText.T);
            }
        });
    });
});
于 2013-02-11T03:08:54.793 に答える