Noobie Jquery问题-我在脚本中发现了一个bug,不知道如何修复它

Noobie Jquery问题-我在脚本中发现了一个bug,不知道如何修复它,jquery,ajax,Jquery,Ajax,谢谢你在这方面的帮助,既然你做得很好,我还有另一个例子:)下面的脚本允许我通过从另一个HTML文件中检索一些静态标记并将其插入我的主页来执行一些简单的AJAX。我遇到了一个bug,我认为它与异步的魔力有关,但由于我是AJAX新手,我不确定 当我将鼠标移到链接上时,它会检索HTML并将其插入我的主页。当我将鼠标从链接上移开时,它应该会删除插入的新HTML。有时插入HTML时会出现错误,但当您非常快地在链接上/下移动鼠标时不会删除错误。我的理论是在实际插入HTML之前调用“mouse off”函数,

谢谢你在这方面的帮助,既然你做得很好,我还有另一个例子:)下面的脚本允许我通过从另一个HTML文件中检索一些静态标记并将其插入我的主页来执行一些简单的AJAX。我遇到了一个bug,我认为它与异步的魔力有关,但由于我是AJAX新手,我不确定

当我将鼠标移到链接上时,它会检索HTML并将其插入我的主页。当我将鼠标从链接上移开时,它应该会删除插入的新HTML。有时插入HTML时会出现错误,但当您非常快地在链接上/下移动鼠标时不会删除错误。我的理论是在实际插入HTML之前调用“mouse off”函数,你同意吗?如果是这样的话,有没有关于如何解决这个问题的想法?这是剧本

$(function()
{
    //HOVER EFFECT FOR CONTACT LINK
    $('a#contact_link').hover(function() 
    {        
        $('<div id="contact_container" />').load('contact.htm #contact', function() 
        {
            $(this).stop()
                .hide()
                .insertAfter('#header')
                .slideDown(250);    
        });      
    }, 
    //MOUSE OFF EFFECT FOR CONTACT LINK
    function()
    {
        $('#contact_container').remove();       
    });    
});
$(函数()
{
//接触链接的悬停效果
$('a#contact_link')。悬停(函数()
{        
$('').load('contact.htm#contact',function()
{
$(this.stop())
.hide()
.insertAfter(“#标题”)
.向下滑动(250);
});      
}, 
//联系人链接的鼠标关闭效果
函数()
{
$('#contact_container')。删除();
});    
});
非常感谢您的帮助

编辑*多亏了您的回复,我更改了脚本,错误似乎得到了修复…

$(function()
{
    //RETRIEVE THE MARKUP AT PAGE LOAD
    $('<div id="contact_container" />').load('contact.htm #contact', function() 
    {
        $(this).hide()
            .insertAfter('#header');
    });

    //HOVER EFFECT FOR CONTACT LINK, SHOW THE MARKUP
    $('a#contact_link').hover(function() 
    {        
        $('#contact_container').stop()
            .slideDown(250);             
    }, 
    //MOUSE OFF EFFECT FOR CONTACT LINK, HIDE THE MARKUP
    function()
    {
        $('#contact_container').stop()
            .hide();        
    });    
});
$(函数()
{
//在页面加载时检索标记
$('').load('contact.htm#contact',function()
{
$(this.hide())
.insertAfter(“#标题”);
});
//联系人链接的悬停效果,显示标记
$('a#contact_link')。悬停(函数()
{        
$(“#联系_容器”).stop()
.向下滑动(250);
}, 
//鼠标关闭效果对于联系人链接,隐藏标记
函数()
{
$(“#联系_容器”).stop()
.hide();
});    
});

我仍然可以看到这个脚本中可能存在一些bug,但我将把它留作另一个问题;)谢谢大家

为什么不只填写一次内容,并在鼠标不在时隐藏div。如果DOM中存在div,则再次调用hover时,只需更改div的可见性即可

如果得到的响应相同,那么每次加载带有Ajax响应的div都不是一个好主意

if ($("#contact_container").length > 0){
    // the element exits in the DOM
}
听起来不错

一种可能的解决方法是在ajax调用成功时设置一个标志,以指示内容已插入。然后,在hover out函数中,检查标志是否已设置,如果已设置,则调用remove命令。您可以设置一个间隔来检查标志,直到它被设置为止

或者以另一种方式-

执行“装入文档准备就绪”,隐藏内容,然后分别将鼠标悬停在上方和向外显示和隐藏


顺便说一下,您的选择器将插入一个新的
元素,id为
contact\u container
,这就是您想要的吗?

我想有人已经回答说您的DIV选择器错了。你试着修好了吗?

你为什么不使用mouseleave

        $("a#contact_link").mouseleave(function(event){
            $("a#contact_link").hide("slow");
        });

他正在使用一个get请求,因此它将被缓存。问题是,检查div是否存在的简单方法是什么?由于对我上一个问题的回答,我在这个脚本中的div选择器工作良好。谢谢,这是一个很好的提示,您的观点很好。这是我想要的,但可能不是每次链接悬停的时候。这不会产生与上面相同的行为吗?