Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 多个鼠标器和AJAX调用_Jquery_Ajax - Fatal编程技术网

Jquery 多个鼠标器和AJAX调用

Jquery 多个鼠标器和AJAX调用,jquery,ajax,Jquery,Ajax,我正在创建一个jQuery弹出窗口,当鼠标悬停在用户名上时,它会用AJAX显示用户信息。它起作用了,但只是第一次。如果我将鼠标移出,弹出窗口消失,然后再次将鼠标悬停在用户名上,弹出窗口为空,似乎AJAX调用不会重复多次 有人能告诉我原因吗 编辑:新的清理代码问题仍然没有解决,只是使代码更容易遵循: $(function(){ var hideDelay = 300; var currentID = 0; var hideTimer = null; var container = $('<d

我正在创建一个jQuery弹出窗口,当鼠标悬停在用户名上时,它会用AJAX显示用户信息。它起作用了,但只是第一次。如果我将鼠标移出,弹出窗口消失,然后再次将鼠标悬停在用户名上,弹出窗口为空,似乎AJAX调用不会重复多次

有人能告诉我原因吗

编辑:新的清理代码问题仍然没有解决,只是使代码更容易遵循:

$(function(){
var hideDelay = 300;
var currentID = 0;
var hideTimer = null;
var container = $('<div id="personPopupContainer">' + '</div>');

var displayPopup = function(){
    currentID = $(this).attr('rel');

    if (hideTimer != null) {
        clearTimeout(hideTimer);
    }

    var position = $(this).offset();
    container.css({
        left: position.left + 90 + 'px',
        top: position.top + 15 + 'px'
    });

    $.ajax({
        type: 'GET',
        url: '/process.cfm',
        data: 'id=' + currentID,
        success: function(data){
            $('#personPopupContainer').html(data);

            if ($(data).find('#personPopupResult').length) {
                var text = $(data).find('#personPopupResult').html();
                $('#personPopupContainer').html(text);
            }
        }
    });

    container.css('display', 'block');
}

var hidePopup = function(){
    if (hideTimer) {
        clearTimeout(hideTimer);
    }

    hideTimer = setTimeout(function(){
        container.css('display', 'none');
    }, hideDelay);
}

var allowPopupMouseover = function() {
    if (hideTimer) {
        clearTimeout(hideTimer);
    }
}

$('body').append(container);
$('.personPopupTrigger').live('mouseover', displayPopup);
$('.personPopupTrigger').live('mouseout', hidePopup);
$('#personPopupContainer').mouseover(allowPopupMouseover);
$('#personPopupContainer').mouseout(hidePopup);

})

我在您的代码中看不到任何地方说,当您悬停时,正在调用Ajax。@AdamHoke它都在$'.personPopupTrigger.live'mouseover'函数中{.What$'.personPopupTrigger.attr'rel'最初设置为,mouseout之后设置为,并且您将display设置为none?您确定在调用ajax之前它不会从函数中返回吗?原因是:var currentID=$this.attr'rel';如果currentID==return;您在开始时声明了两次currentID我还建议您为您的事件创建不同的函数,以便代码更易于阅读/理解。Adam,rel属性最初设置为用户ID,因此当我将鼠标悬停在用户的用户名链接上时,我可以获取它的唯一ID,然后将其传递给process.cfm以处理事件d生成用户配置文件信息以在弹出窗口中输出。我将尝试清理代码并按照您的建议进行操作,完成后更新主题。谢谢