1

だから私は友達検索機能に取り組んでいます。検索機能は素晴らしい働きをします。名前を検索すると、個々のユーザーが別々のdivにポップアップ表示され、画像と名前、および「リクエスト」というボックスが表示されます。今私がやりたいのは、ボックスをクリックすると、jQueryを実行してユーザーを要求することですが、jQueryはライブローディングJSdiv内で機能していないようです。

これが私のコードです:

$(document).ready(function(){
    $('.request').mouseover(function() {
        $(this).addClass('select');
    });
});

 $(document).ready(function(){ 
    $('.request').mouseout(function() {
        $(this).removeClass('select');
    });
}); 

$(document).ready(function(){   
    $('.request.select').click(function() {
        var name = $(this).attr('href');
        $.ajax({
            type: "POST",
            url: "requestfriend.php",
            data: {'name': name}
        });
        $(".request.select").load('checkmark.php', function(){ });

    });
});

そして、これがユーザーdivのHTMLです。

            echo '
            <div class="update miniuser" style="margin: 3px; width: 395px;">
            <div><img src="http://myurl.com/' . $FRIENDS[$i] . '/user.png" /></div>
            <div style="margin-top: 10px;">' . $FRIENDS[$i] . '</div><div class="request" href="' . $FRIENDS[$i] . '">Request</div>
            </div></div>';

追加クラスが機能していません。ロードされているのはdivにライブであるからだと思いますか?それは私がそれらにドキュメントレディ関数を置いたときです。まだサイコロはありません。

4

2 に答える 2

1

ドキュメントの準備ができたら、mouseover/outイベントを追加します。ロードしたデータは、かなり後になるまでDOMに追加されません。AJAXリクエストを実行し、コンテンツがDOMに追加されたら、イベントを添付します。

$('.request').mouseover(function() {
    $(this).addClass('select');
});

手段:クラスですべての要素を検索しrequest、マウスオーバー関数を追加します。後で追加する要素にハンドラーが魔法のように表示されることはありません。

于 2012-04-21T15:55:16.160 に答える
1

私はあなたが望む.live()と推測しています。これは、動的にロードされるかどうかにかかわらず、そのセレクターを持つすべての要素に関数を追加します。

$('.request.select').live("click", function() {
    var name = $(this).attr('href');
    $.ajax({
        type: "POST",
        url: "requestfriend.php",
        data: {'name': name}
    });
    $(".request.select").load('checkmark.php', function(){ });

});
于 2012-04-21T15:58:09.383 に答える