1

所以我正在研究朋友搜索功能。搜索功能很好用。当您搜索名称时,每个单独的用户都会在单独的 div 中弹出,其中包含图片和名称以及一个显示“请求”的框。现在我想做的是,当您单击该框时,它将运行一些 jQuery 来请求用户,但似乎 jQuery 在我的实时加载 JS div 中不起作用。

这是我的代码:

$(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 回答