jQuery 不与 JS 搜索函数一起使用


jQuery Not Working with a JS Search function

所以我正在研究朋友搜索功能。搜索功能效果很好。当您搜索名称时,每个用户都会在单独的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 中加载实时?那时我把文档就绪功能放在他们身上。还是没有骰子。

我猜你想要.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(){ });
});

您正在将鼠标悬停/悬停事件添加到文档就绪上。您加载的数据直到很久以后才会添加到 DOM 中。完成 AJAX 请求并将内容添加到 DOM 后,附加事件。

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

意思是:找到所有带有类request的元素,并添加一个鼠标悬停功能。处理程序不会神奇地出现在您之后添加的元素上。